『壹』 資料庫存儲在計算機存儲設備上按什麼方式存放的,資料庫中的數據又是按什麼方式存放的
oracle的是按照文件方式存儲的,資料庫中的數據是以表的方式存放。表佔用的就是磁碟上的數據塊。
『貳』 sql資料庫中都是以表的形式存儲數據的嗎
SQLSERVER資料庫中數據存儲:
一:存儲文件類型
SQLSERVER有兩種數據存儲文件,分別是數據文件和日誌文件。
其中:數據文件是以8K(=8192Byte)的頁面(Page)作為存儲單元的。
而日誌文件是以日誌記錄作為存儲單元。本文只討論數據文件的存儲方式,不涉及到日誌文件存儲方式。
數據文件以頁面做為存儲單元存儲數據,要理解數據文件的存儲方式,必須了解SQLSERVER中定義的頁面類型種類。
二:頁面類型
SQLSERVER中頁面類型有8種,具體每種類型的詳細說明,見下圖:
用戶的數據一般存放在數據頁面中,由上圖可以看出,數據頁包含數據行中除 text、ntext 和 image 數據外的所有數據,text、ntext 和 image 數據存儲在單獨的頁中。那麼在一個數據頁面中,數據是如何存放,SQLSERVER又是根據什麼來定位頁面與頁面上的數據呢。要回答這個問題,有必要先了解數據頁面的具體結構。
三:數據頁面結構
在數據頁上,數據行緊接著頁首按順序放置。在頁尾有一個行偏移表。在行偏移表中,頁上的每一行都有一個條目,每個條目記錄那一行的第一個位元組與頁首的距離。行偏移表中的條目序列與頁中行的序列相反。數據頁面結構如下圖所示,下面將詳細解釋
其中:數據頁面頁首:96個位元組,保存著頁面的系統信息,如頁的類型、頁的可用空間量、擁有頁的對象的對象 ID 以及該頁面所屬於哪個物理文件。
數據區:對應於上圖中所有數據行的總區域,存放真正的數據,是以Slot為單位。一個Slot就是對應於一條數據記錄行,從0開始編號,以16進制反序保存,Slot0,Slot1....。
行偏移數組:用於記錄該數據頁面中每個Slot在數據頁面所處的相對位置,便於定位和檢索每個Slot在數據頁面中的位置,數組中每個記錄占兩個位元組。
四:存儲分配單位:盤區(擴展 Extend)
雖然SQLSERVER中數據文件存儲單位是頁面(Page),但實際SQLSERVE並不是為頁面為單位給數據分配空間,SQLSERVER默認的存儲分配單位是盤區。這樣做的主要原因是為了提高性能。為了避免頻繁的讀寫IO,在表或其它對象分配存儲空間,不是直接分配一個8K的頁面,而是以一個盤區(Extend)為存儲分配單位,一個盤區為8個頁面(=8*8K=64K)。
但是這樣做雖然減少了頻繁的IO讀寫,提高的資料庫性能,但卻導致出一個新問題,那就是在存儲那些只有少量數據,不足8K的對象,如果也是分配給一個盤區,就會存在存儲空間上的浪費,降低了空間分配效率。
為解決上述問題,SQLSERVER提供了一種解決方案,定義了兩種盤區類型,統一盤區和混合盤區。
其中:統一盤區只能存放同一個對象,該對象擁有這個盤區的所有頁面
混合盤區:由多個對象共同擁有該盤區。
在實際為對象分配存儲盤區時,為了提高空間利用率,默認的情況下,如果一個對象一開始大小小於8個頁面,就盡量放在混合盤區中,如果該對象大小增加到8個頁面後,SQLSERVER會為這個對象重新分配一個統一盤區。
為了能夠通過上述策略來實現為對象分配存儲盤區,SQLSERVER提供了GAM/SGAM機制來管理和維護數據文件的盤區信息。
『叄』 資料庫應用系統中的數據是以什麼形式存在的
資料庫在計算機中是以文件的形式存在的。(確定)
資料庫是依照某種數據模型組織起來並存放二級存儲器中的數據集合。這種數據集合具有如下特點:盡可能不重復,以最優方式為某個特定組織的多種應用服務,其數據結構獨立於使用它的應用程序,對數據的增、刪、改和檢索由統一軟體進行管理和控制。從發展的歷史看,資料庫是數據管理的高級階段,它是由文件管理系統發展起來的。
資料庫的基本結構分三個層次,反映了觀察資料庫的三種不同角度。
(1)物理數據層。
它是資料庫的最內層,是物理存貯設備上實際存儲的數據的集合。這些數據是原始數據,是用戶加工的對象,由內部模式描述的指令操作處理的位串、字元和字組成。
(2)概念數據層。
它是資料庫的中間一層,是資料庫的整體邏輯表示。指出了每個數據的邏輯定義及數據間的邏輯聯系,是存貯記錄的集合。它所涉及的是資料庫所有對象的邏輯關系,而不是它們的物理情況,是資料庫管理員概念下的資料庫。
(3)邏輯數據層。
它是用戶所看到和使用的資料庫,表示了一個或一些特定用戶使用的數據集合,即邏輯記錄的集合。
資料庫不同層次之間的聯系是通過映射進行轉換的。
『肆』 資料庫怎麼保存文件
問題一:請教如何將文件存儲到資料庫中? 將文件保存到資料庫中,實際上是將文件轉換成二進制流後,將二進制流保存到資料庫相應的欄位中。在SQL Server中該欄位的數據類型是Image,在Access中該欄位的數據類型是OLE對象。保存文件到SQL Server資料庫中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));Sqlmand cm=new Sqlmand();cm.Connection=;cm.mandType=mandType.Text;if(.State==0) .Open();cm.mandText=insert into +tableName+(+fieldName+) values(@file);SqlParameter spFile=new SqlParameter(@file,SqlDbType.Image);spFile.Value=bytes;cm.Parameters.Add(spFile);cm.ExecuteNonQuery()保存文件到Access資料庫中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));OleDbmand cm=new OleDbmand();
問題二:如何保存sql資料庫 右鍵資料庫,屬性,查看資料庫路徑,如圖
停止服務管理器,然後拷出來就行了
問題三:資料庫文件怎樣保存到壓縮包里 資料庫嫌橋跡設計二進制欄位就可以了,讀取文件,寫入資料庫就行了
問題四:資料庫文件的默認存放位置? 很長,一時間想不起來
不過你可以先創建一個默認的資料庫
然後點擊資料庫屬性,裡面有路徑
把它復制到文件夾地址就行了
希望對你能有所幫助
問題五:資料庫怎麼存儲文件 以二進制的方式處理。
如果使用 SQLServer 資料庫,創建 varbinary(max) 類型的欄位。
如果使用 Oracle 資料庫,創建 blog 類型的欄位。
問題六:sql資料庫如何導出? 使用Discuz! X1.5自帶的導出功能
問題七:如何像資料庫中保存圖片? 一般消旅圖像是不保存在資料庫的.而是先將圖片放在工程下的某個文件夾中,將圖片所在的工程文件路徑存在資料庫中,當程序載入圖片的時候,從資料庫中讀取圖片的路徑,然後根據路徑在工程的文件夾中讀取圖片文件
問題八:如何用SQL資料庫存放視頻 用iamge類型,寫入的時間用流寫入,讀出的時間同樣需要流轉換
問題九:sql 存儲過程怎樣保存 greate 應該是CREATE
use tbuser
go
Create procere search_login
@username varchar(50),@userpass varchar(50)
as
BEGIN
select * from tbuser where [email protected] and [email protected]
END
只要點執行就存在伺服器里了
保存本地,直接點保存就行了。
問題十:如何將資料庫導出成sql文件 您好,很高興為您解答。
1、打開SQL Server Management Studio 2008 ,連接到資料庫伺服器,展開對象資源管理器到資料庫節點
2、選擇需要將數據導出到腳芹並本的資料庫,將包含所有的存儲過程,表,視圖,表裡的數據等等。
3、右擊選中的數據,按照以下路徑選擇生成腳本向導 :AdventureWorks -〉任務 -〉生成腳本
4、當點擊生成腳本,彈出一個向導--生成資料庫對象腳本。
5、下一步到達設置腳本編寫選項,進入高級設置對話框,關鍵是要編寫腳本的數據類型這里,默認是僅限架構,選擇架構和數據或者是數據都可以吧數據導成腳本
執行完就可以看到結果了
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
『伍』 在資料庫中存儲的是什麼
資料庫是「按照數據結構來組織、存儲和管理數據的倉庫」。是一個長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合。
資料庫是一個按數據結構來存儲和管理數據的計算機軟體系統。資料庫的概念實際包括兩層意思:資料庫是一個實體,它是能夠合理保管數據的「倉庫」,用戶在該「倉庫」中存放要管理的事務數據,「數據」和「庫」兩個概念結合成為資料庫。
資料庫系統,是由資料庫及其管理軟體組成的系統。資料庫系統是為適應數據處理的需要而發展起來的一種較為理想的數據處理系統,也是一個為實際可運行的存儲、維護和應用系統提供數據的軟體系統,是存儲介質 、處理對象和管理系統的集合體。
『陸』 資料庫中的存儲過程是什麼
存儲過程是存儲在
.dbc
文件中的
Visual
FoxPro
代碼,是專門操作資料庫中數據的代碼過程。存儲過程可以提高資料庫的性能,因為在打開一個資料庫時,它們便載入到了內存中。
使用存儲過程主要是為了創建用戶自定義函數,欄位級規則和記錄級有效性規則將引用這些函數。當把一個用戶自定義函數作為存儲過程保存在資料庫中時,函數的代碼保存在
.dbc
文件中,並且在移動資料庫時,會自動隨資料庫移動。使用存儲過程能使應用程序更容易管理,因為可以不必在資料庫文件之外管理用戶自定義函數。
『柒』 數據是如何存入資料庫中的
在一些數據量比較大,而且操作資料庫頻繁的。此時需要將數據表datatable整塊的存入資料庫中。
首先得新建一個資料庫
DataTable once_rec_date = new DataTable();
這個資料庫得跟目標資料庫的列的位置和大小都得一樣。特別是類型,和位置。就是列的位置和目標資料庫的位置,順序得 一模一樣。因為都是塊存儲,所以地址什麼的都得一樣,千萬不能少一列,自增列可以空在那邊。
(7)數據在資料庫內怎麼存儲的擴展閱讀
資料庫入門基礎知識:
資料庫的分類
關系型資料庫: 經過數學理論驗證 可以保存現實生活中的各種關系數據, 資料庫中存儲數據以表為單位;非關系型資料庫:通常用來解決某些特定的需求如:數據緩存,高並發訪問。 存儲數據的形式有多種,舉例:Redis資料庫:通過鍵值對的形式存儲數據。
創建資料庫:CREATE DATABASE database_name
刪除資料庫:DROP DATABASEdatabase_name
選擇資料庫:USEdatabase_name
創建數據表:CREATE TABLE table_name (column_name column_type)
刪除數據表:DROP TABLE table_name
更新數據表信息:
添加表欄位:ALTER TABLE table_name ADD new_column DATATYPE
使用FIRST關鍵字可以將新增列的順序調整至數據表的第一列:ALTER TABLE table_name ADD new_column DATATYPE FIRST
使用AFTER關鍵字可以將新增列調整至數據表的指定列之後:ALTER TABLE table_name ADD new_column DATATYPE AFTER old_column
『捌』 數據是如何存儲的
轉自網友文章: 大型網站資料庫優化
千萬人同時訪問的網站,一般是有很多個資料庫同時工作,說明白一點就是資料庫集群和並發控制,這樣的網站實時性也是相對的。這些網站都有一些共同的特點:數據量大,在線人數多,並發請求多,pageview高,響應速度快。總結了一下各個大網站的架構,主要提高效率及穩定性的幾個地方包括:1、程序
程序開發是一方面,系統架構設計(硬體+網路+軟體)是另一方面。軟體架構方面,做網站首先需要很多web伺服器存儲靜態資源,比如圖片、視頻、靜態頁等,千萬不要把靜態資源和應用伺服器放在一起。一個好的程序員寫出來的程序會非常簡潔、性能很好,一個初級程序員可能會犯很多低級錯誤,這也是影響網站性能的原因之一。
網站要做到效率高,不光是程序員的事情,資料庫優化、程序優化這是必須的,在性能優化上要資料庫和程序齊頭並進!緩存也是兩方面同時入手。第一,資料庫緩存和資料庫優化,這個由dba完成(而且這個有非常大的潛力可挖,只是由於我們都是程序員而忽略了他而已)。第二,程序上的優化,這個非常的有講究,比如說重要一點就是要規范SQL語句,少用in 多用or,多用preparestatement,另外避免程序冗餘如查找數據少用雙重循環等。另外選用優秀的開源框架加以支持,我個人認為中後台的支持是最最重要的,可以選取spring+ibatis。因為ibatis直接操作SQL並有緩存機制。spring的好處就不用我多說了,IOC的機制可以避免new對象,這樣也節省開銷。據我分析,絕大部分的開銷就是在NEW的時候和連接資料庫時候產生的,請盡量避免。另外可以用一些內存測試工具來做一個demo說明hibernate和ibatis誰更快!前台你想用什麼就用什麼,struts,webwork都成,如果覺得自己挺牛X可以試試用tapestry。用資料庫也未必不能解決訪問量巨大所帶來的問題,作成靜態文件硬碟的定址時間也未必少於資料庫的搜索時間,當然對資料的索引要下一翻工夫。我自己覺得門戶往往也就是當天、熱門的資料點擊率較高,將其做緩存最多也不過1~2G的數據量吧,舉個例子:◎ 拿網易新聞來說 http://news.163.com/07/0606/09/3GA0D10N00011229.html
格式化一下,方便理解:http://域名/年/月日/新聞所屬分類/新聞ID.html
可以把當天發布的、熱門的、流攬量大的作個緩寸,用hashtable(key:年-月-日-分類-ID,value:新聞對象),靜態將其放到內存(速度絕對快過硬碟定址靜態頁面)。通常是採用oracle存儲過程+2個weblogic,更新機制也幾乎一樣每簽發一條新聞,就會生成靜態頁面,然後發往前端的web伺服器,前端的web都是做負載均衡的。另外還有定時的程序,每5-15分鍾自動生成一次。在發布新聞的同時將數據緩存。當然緩存也不會越來越大,在個特定的時間段(如凌晨)剔除過期的數據。做一個大的網站遠沒有想像中那麼簡單,伺服器基本就要百十個的。這樣可以大大增加一台計算機的處理速度,如果一台機器處理不了,可以用httpserver集群來解決問題了。2、網路
中國的網路分南北電信和網通,訪問的ip就要區分南北進入不同的網路。3、集群通常會使用CDN與GSBL與DNS負載均衡技術,每個地區一組前台伺服器群,例如:網易,網路使用了DNS負載均衡技術,每個頻道一組前台伺服器,一搜使用了DNS負載技術,所有頻道共用一組前台伺服器集群。網站使用基於Linux集群的負載均衡,失敗恢復,包括應用伺服器和資料庫伺服器,基於linux-ha的服務狀態檢測及高可用化。
應用伺服器集群可以採用apache+tomcat集群和weblogic集群等;web伺服器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根據情況選擇。4、資料庫因為是千萬人同時訪問的網站,所以一般是有很多個資料庫同時工作的,說明白一點就是資料庫集群和並發控制,數據分布到地理位置不同的數據中心,以免發生斷電事故。另外還有一點的是,那些網站的靜態化網頁並不是真的,而是通過動態網頁與靜態網頁網址交換做出現的假象,這可以用urlrewrite這樣的開源網址映射器實現。這樣的網站實時性也是相對的,因為在資料庫復制數據的時候有一個過程,一般在技術上可以用到hibernate和ecache,但是如果要使網站工作地更好,可以使用EJB和websphere,weblogic這樣大型的伺服器來支持,並且要用oracle這樣的大型資料庫。
大型門戶網站不建議使用Mysql資料庫,除非你對Mysql數據的優化非常熟悉。Mysql資料庫伺服器的master-slave模式,利用資料庫伺服器在主從伺服器間進行同步,應用只把數據寫到主伺服器,而讀數據時則根據負載選擇一台從伺服器或者主伺服器來讀取,將數據按不同策略劃分到不同的伺服器(組)上,分散資料庫壓力。
大型網站要用oracle,數據方面操作盡量多用存儲過程,絕對提升性能;同時要讓DBA對資料庫進行優化,優化後的資料庫與沒優化的有天壤之別;同時還可以擴展分布式資料庫,以後這方面的研究會越來越多; 如果我來設計一個海量資料庫,可能首先考慮的就是平行擴容性,原因很簡單,我沒有辦法預估將來的數據規模,那我也就沒有邊界可言,因此,基本上首選dbm類哈希型資料庫,甚至,對於實時性要求很高的資料庫,可能會自行設計庫。 當我們使用業務描述腳本、事務批處理機、目錄服務、底層存取來劃分一個資料庫系統之後,其實,所謂的海量數據需求,也就不是那麼難辦到了。 嗯,這樣還有一個額外的好處,就是由於平行擴容性很好,因此,前期可以以較低成本搭建一個簡單的架子,後期根據業務量逐出擴容。這對很多企業來說,就是入門門檻很低,便於操作,且商業風險也小。MySQL比起動輒幾十萬美金,搭建豪華的Oracle平台,成本低多了。
『玖』 資料庫存儲過程是什麼
問題一:sql資料庫中的存儲過程該怎麼理解 有什麼用啊? 存儲過程是SQL 語句和流程式控制制語句的預編譯 *** ,以一個名稱存儲並作為一個單元處理。存儲過程存儲在資料庫內,可由應用程序調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。
問題二:資料庫中什麼是存儲過程?作用是什麼? 存儲過程,就是帶有名字的一個程序塊。
存儲,是指這個程序塊創建了之後,是存儲在資料庫內部的,然後我們可以在自己寫的程序中通過某種手段去調用這段程序,然後這段程序就會做一件事,做什麼事?我們定義存儲過程的時候怎麼寫的,它到時候就做什麼;
過程,就是程序塊,說白了就是一段程序。
存儲過程,創建完成之後,就存儲在資料庫內部了,資料庫幫你記著,存儲過程創建的時候都有一個名字,將來你在你的程序當中,通過某種方式(不同編程語言有不同的方式),一般來講通過這個名字,去調用存儲過程,就像使用一個方法或者函數一樣,它就去做一件事!
不同的資料庫的存儲過程,都是用當前自己這個資料庫的編程語言來編寫的,比如Oracle的PL/SQL編程,等等。
自己寫一個就明白了,語法不用我多說了吧?
問題三:什麼叫作資料庫的存儲過程? 存儲過程就是將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同SQL語句, 那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。 存儲過程的優點 1.存儲過程只在創造時進行編譯即可,以後每次執行存儲過程都不需再重新編譯,而我們通常使用的SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。 2.經常會遇到復雜的業務邏輯和對資料庫的操作,這個時候就會用SP來封裝資料庫操作。當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。可以極大的提高資料庫的使用效率,減少程序的執行時間,這一點在較大數據量的資料庫的操作中是非常重要的。在代碼上看,SQL語句和程序代碼語句的分離,可以提高程序代碼的可讀性。 3.存儲過程可以設置參數,可以根據傳入參數的不同重復使用同一個存儲過程,從而高效的提高代碼的優化率和可讀性。 4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權存儲過程的種類: (1)系統存儲過程:以sp_開頭,用來進行系統的各項設定.取得信息.相關管理工作,如 sp_help就是取得指定對象的相關信息。 (2)擴展存儲過程 以XP_開頭,用來調用操作系統提供的功能exec master..xp_cmdshell 'ping 10.8.16.1' (3)用戶自定義的存儲過程,這是我們所指的存儲過程常用格式 模版:Create procere procee_name [@parameter data_type][output][with]{repile|encryption} as sql_statement 解釋:output:表示此參數是可傳回的 with {repile|encryption} repile:表示每次執行此存儲過程時都重新編譯一次;encryption:所創建的存儲過程的內容會被加密。
問題四:資料庫中存儲過程有什麼主要作用,或都說它的主要用途? 存儲過程的概念
存儲過程(Stored Procere)是一組預先編繹好的Transact-SQL語句。將其放在伺服器上,由用戶通過指定存儲過程的名字來執行它。存儲過程可以作為一個獨立的資料庫對象,也可以作為一個單元被用戶的應用程序調用。存儲過程可以接收和輸出參數,返回執行存儲過程的狀態值,還可以嵌套調用。
存儲過程同其他編程語言中的過程(Procere)類似,主要體現在以下幾個方面:
(1)存儲過程可以接收參數,並以接收參數的形式返回多個參數給調用存儲過程和批處理。
(2)包含執行資料庫操作的編程語句,也可以調用其他的存儲過程。
(3)向調用過程或批處理返回狀態值,以反映存儲過程的執行情況。
注意:存儲過程跟函數不同,存儲過程不能在被調用的位置上返回數據,也不能被應用在語句當中,例如不可以用類似「@Proc=存儲過程名」的方式使用存儲過程。但是,存儲過程可以使用變數的形式來返回參數。
存儲過程的優點表現在以下幾個方面:
(1)執行速度快
存儲過程在創建時就經過了語法檢查和性能優化,因此在執行時不必再重復這些步驟。存儲過程在第一次調用後,就駐留在內存中,不必再經過編譯和優化,所以執行速度很快。在有大量批處理的Transact-SQL語句要重復執行的時候,使用存儲過程可以極大地提高運行效率。
(2)模塊化程序設計
只需創建存儲過程一次,並將其存儲在資料庫中,可以在程序中多次調用該存儲過程。用戶可以獨立於應用程序而對存儲過程進行修改。
(3)減少網路通信量
存儲過程中可以包含大量的Transact-SQL語句。在進行調用時,只需要使用一條語句就可以實現,而不需要在網路中發送數百行代碼。
(4)保證系統的安全性
可以設置用戶通過存儲過程來對某些關鍵數據進行訪問,但不允許用戶直接使用Transact-SQL語句或企業管理器來對數據進行訪問。
問題五:資料庫存儲過程和函數的區別 函數分兩種,表值函數跟標量函數
表值函數最後要返回一個表變數,而標量函數最後要返回一個標量值
存儲過程即一組批處理,可以返回或不返回值,僅僅是執行其內部的全部語句
函數可以與一般sql語句一同編寫,而存儲過程不可以,需要單獨執行
問題六:資料庫編輯存儲過程是什麼意思 一般來說,程序員都希望編寫出來的程序能有最大化的應變能力,存儲過程的最大作用是可以降低代碼維護的工作量,很多需求的變化不用修改代碼進而發布程序,而只需要調整一下存儲過程即可實現
例如你打算開發一個報表,該報表會對資料庫的數據進行一定程度的加工,然後再呈現給用戶,那麼你的實現方法有兩個
1. 使用代碼調用SQL,取到基礎數據後,在程序代盯裡面進行加工,並呈現給用戶
2. 也可以編寫一段存儲過程,該存儲過程先取基礎數據,然後在存儲過程裡面進行數據加工,最後把最終的結果一次性的反饋給程序代碼,程序代碼只需要把執行完存儲過程的結果呈現給用戶即可
這兩個方法都可以實現你想實現的功能,但是如果萬一有一天需求變化了,用戶需要呈現的結果中增加或者減少了部分內容,那麼第一個方法就只能修改代碼了,而第二個方法只需要調整存儲過程即可實現
問題七:在SQL中存儲過程的一般語法是什麼? sql server存儲過程語法
存儲過程就是作為可執行對象存放在資料庫中的一個或多個SQL命令。
定義總是很抽象。存儲過程其實就是能完成一定操作的一組SQL語句,只不過這組語句是放在資料庫中的(這里我們只談SQL Server)。如果我們通過創建存儲過程以及在ASP中調用存儲過程,就可以避免將SQL語句同ASP代碼混雜在一起。這樣做的好處至少有三個:
第一、大大提高效率。存儲過程本身的執行速度非常快,而且,調用存儲過程可以大大減少同資料庫的交互次數。
第二、提高安全性。假如將SQL語句混合在ASP代碼中,一旦代碼失密,同時也就意味著庫結構失密。
第三、有利於SQL語句的重用。
在ASP中,一般通過mand對象調用存儲過程,根據不同情況,本文也介紹其它調用方法。為了方便說明,根據存儲過程的輸入輸出,作以下簡單分類:
1. 只返回單一記錄集的存儲過程
假設有以下存儲過程(本文的目的不在於講述T-SQL語法,所以存儲過程只給出代碼,不作說明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存儲過程取得userinfo表中的所有記錄,返回一個記錄集。通過mand對象調用該存儲過程的ASP代碼如下:
'**通過mand對象調用存儲過程**
DIM Mym,MyRst
Set Mym = Server.CreateObject(ADODB.mand)
Mym.ActiveConnection = MyConStr 'MyConStr是資料庫連接字串
Mym.mandText = getUserList '指定存儲過程名
Mym.mandType = 4 '表明這是一個存儲過程
Mym.Prepared = true '要求將SQL命令先行編譯
Set MyRst = Mym.Execute
Set Mym = Nothing
存儲嘩程取得的記錄集賦給MyRst,接下來,可以對MyRst進行操作。
在以上代碼中,mandType屬性表明請求的類型,取值及說明如下:
-1 表明mandText參數的類型無法確定
1 表明mandText是一般的命令類型
2 表明mandText參數是一個存在的表名稱
4 表明mandText參數是一個存儲過程的名稱
還可以通過Connection對象或Recordset對象調用存儲過程,方法分別如下:
'**通過Connection對象調用存儲過程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject(&qu......>>
問題八:T-SQL和存儲過程有什麼區別 20分 區別T-SQL是語言,存儲過程是資料庫一種對象
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增強版,它是用來讓應用程式與 SQL Server 溝通的主要語言。
Transact-SQL中的存儲過程,非常類似於Java語言中的方法,它可以重復調用。當存儲過程執行一次後,可以將語句緩存中,這樣下次執行的時候直接使用緩存中的語句。這樣就可以提高存儲過程的性能。
? 存儲過程的概念
存儲過程Procere是一組為了完成特定功能的SQL語句 *** ,經編譯後存儲在資料庫中,用戶通過指定存儲過程的名稱並給出參數來執行。
存儲過程中可以包含邏輯控制語句和數據操縱語句,它可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
由於存儲過程在創建時即在資料庫伺服器上進行了編譯並存儲在資料庫中,所以存儲過程運行要比單個的SQL語句塊要快。同時由於在調用時只需用提供存儲過程名和必要的參數信息,所以在一定程度上也可以減少網路流量、簡單網路負擔。
問題九:資料庫存儲過程怎麼調用存儲過程 在存儲過程里用exec執行另一存儲過程名及它需要的參數就可以了
如 exec abc '1', '2' (abc 是存儲過程的名字, '1','2' 是它的參數)
『拾』 資料庫中數據如何存儲
資料庫是一種文件系統
可以將數據導出為指定格式