SQL Server 2005 - 探討資料表的類型
Microsoft® SQL Server™ 的資料表可分為三種類型,它們分別是使用者資料表、暫存資料表與系統資料表。相信大家對使用者資料表絕對不會陌生,因為本章至目前為止,指導您如何建立與維護的資料表皆是使用者資料表,顯而易見地,由使用者自行建立,以便用來永久儲存特定性質之資料記錄的資料表便是使用者資料表。 至於暫存資料表與系統資料表則有其特定的功能與用途,本節筆者針對此一部分加以說明,以便讓大家對 Microsoft® SQL Server™ 的資料表有更完整且全面的認識。 暫存資料表 顧名思義,暫存資料表就是暫存資料的儲存處,於系統執行過程中,我們經常需要執行一些複雜的運算與處理,在此期間不免會產生一些階段性與過渡性的資料,這些資料在整個處理作業完成後便不再需要而必須刪除,像此類資料就非常適合存放於暫存資料表。 暫存資料表亦是由開發者自行建立,特別的是,不管您於任何資料庫中建立暫存資料表,暫存資料表皆固定存放於系統資料庫 tempdb中,而且一旦不使用會自動被刪除。您可別以為針對暫存資料表所做的異動不會被記錄於記錄檔(Log File)中,事實上暫存資料表僅會記錄最少量的記錄,以便在需要時能夠將異動交易復原(RollBack)。然而由於每當SQL Server重新啟動時就會重新建立一個全新的 tempdb,因此當系統重新啟動時 tempdb 的記錄檔不會被用來進行復原處理。同樣地,tempdb也不會自備份中回存,因此tempdb的記錄檔於回存資料庫時是完全不需要的。 於 Microsoft® SQL Server™中,暫存資料表可區分為下列兩種類型: r 區域性暫存資料表 r 全域性暫存資料表 其實只要您擁有足夠的權限,也可以直接在系統資料庫 tempdb 中建立資料表,而且依此法所建立的資料表並不會在您切斷與 SQL Server 的連線後自動被刪除,除非您以 DROP TABLE 陳述式將它刪除或是 SQL Server 重新啟動,否則它是不會被刪除的。以下面的陳述式而言,表示在系統資料庫 tempdb 中建立一個名為 TempTable 的暫存資料表: USE tempdb; 有些人說,條件約束(Constraints)無法使用於暫存資料表,此一說法並不完全正確。事實上所有的條件約束都可使用於直接在系統資料庫 tempdb 中建立的暫存資料表(亦即名稱並非以 # 或 ## 開頭者),而除了 FOREIGN KEY 以外的所有條件約束也都能夠使用於區域性暫存資料表(名稱以 # 開頭者)與全域性暫存資料表(名稱以 ## 開頭者)。 附註: 請注意: 系統資料表 系統資料表是 Microsoft® SQL Server™ 內建的資料表,其中存放著 Microsoft® SQL Server™ 及其元件所使用到的相關系統資訊,說明如下:
r 系統資料表會存放關於系統與資料庫中之物件的資訊,我們通常將此類資訊稱之為「中繼資料」(Metadata)。 Ø 與資料之特性相關的資訊,例如欄位的資料型別、長度...等等。 Ø 與資料之結構相關的資訊。 Ø 用以指定物件之設計方式的資訊。
r 每一個資料庫(包括 master 在內)都會內含一組用以儲存與此資料庫相關之中繼資料的系統資料表,SQL Server 稱此組系統資料表為「資料庫目錄」(Database Catalog)。 r 在系統資料庫 master 中,有一組系統資料表用以儲存關於整個系統與其他所有資料庫的中繼資料,SQL Server 稱此組系統資料表為「系統目錄」(System Catalog)。 |
||||||||||||||||||
|
||||||||||||||||||
圖表1 所有系統資料表皆以 sys 作為其名稱的開頭(例如:systypes),筆者特於圖表1列出一些經常被使用到的系統資料表及其功能用途(SQL Server 中的系統資料表多達數十個,關於各個系統資料表的用途請參閱軟體所附的線上叢書)。 SQL Server 2005 改用「系統檢視表」(System Views)提供伺服器上每個資料庫中之系統目錄的中繼資料,為了讓大家可以望字生義,所有的系統檢視表皆以 sys. 作為其名稱的開頭(例如:sys.types),因此我們只要透過 SELECT陳述式並選用合適的系統檢視表就能查詢到系統資料表相關的中繼資料。比方說,我們要查詢目前使用的資料庫中,系統資料類型和使用者自訂資料類型的詳細資訊有哪些,就可以使用下列的命令描述來得知: SELECT * FROM sys.types 相信您可以瞭解,系統資料表內含許多關於系統、資料庫以及資料庫中之物件的有用資訊,或許您的應用程式正需要使用這些資訊。但是請注意,如果您的應用程式需要自系統資料表取得相關資訊,絕對不可以直接使使用 SELECT 陳述式去查詢系統資料表,而必須透過下列元件來取得: |
留言列表