1.3 SQL Server 2000視圖管理視圖是從一個或者多個表或視圖中匯出的表,其結構和資料是建立在對錶的查詢基礎上的。和真實的表一樣,視圖也包括幾個被定義的資料列和多個資料行,但從本質上講,這些資料列和資料行來源於其所引用的表。因此,視圖不是真實存在的基礎資料表,而是一個虛擬表,視圖中所顯示的資料並不以視圖結構儲存在資料庫中,而是儲存在視圖所引用的表中。 下面我們介紹一下如何建立、修改和刪除視圖。
1.3.1 建立視圖建立視圖時應該注意以下情況。 ● 只能在當前資料庫中建立視圖。● 如果視圖引用的基表或者視圖被刪除,則該視圖不能再被使用,直到建立新的基表或者視圖。● 如果視圖中某一列是函數、數學運算式、常量或者來自多個表的列名相同,則必須為列定義名稱。● 不能在視圖上建立索引,不能在規則、預設、觸發器的定義中引用視圖。● 當通過視圖查詢資料時,SQL Server要檢查以確保語句中涉及的所有資料庫物件存在,而且資料修改語句不能違反資料完整性規則。● 視圖的名稱必須遵循標識符的規則,且對每個使用者必須是惟一的。此外,該名稱不得與該使用者擁有的任何錶的名稱相同。SQL Server 2000提供了兩種方法建立資料庫檢視:一種方法是使用視圖設計器建立視圖;另一種是使用Transact-SQL語句中的CREATE命令建立視圖。(1) 使用視圖設計器建立視圖開啟企業管理器,展開指定執行個體的資料庫,選中“視圖”目錄。然後,單擊滑鼠右鍵,在彈出的捷徑功能表中選擇“建立視圖”命令,開啟“視圖設計器”對話方塊。4-17所示。圖4-17 視圖設計器視圖設計器的介面設計同查詢設計工具極為相似。使用者可以根據自己的需要,在設計器中添加表,選擇要顯示的列,組成視圖。因篇幅限制,這裡不再贅述,讀者可參閱上節內容。(2) 使用Transact-SQL語句中的CREATE VIEW命令建立視圖其文法形式如下:CREATE VIEW [ <
database_name > .] [ <
owner > .]
view_name [ (
column [ ,...
n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS
select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }其中各參數說明如下。●
view_name:用於指定視圖的名稱,column用於指定視圖中的欄位名稱。● WITH ENCRYPTION:表示SQL Server加密包含CREATE VIEW語句文本在內的系統資料表列。●
select_statement:用於建立視圖的SELECT語句,使用SELECT命令可以從表中或者視圖中選擇列以構成新視圖的列。 ● WITH CHECK OPTION:用於強制視圖上執行的所有資料修改語句都必須符合由
select_statement 設定的準則。● SCHEMABINDING:表示在
select_statement語句中如果包含表、視圖或者引用使用者自訂函數,則表名、視圖名或者函數名前必須有所有者首碼。● VIEW_ METADATA:表示如果某一查詢中引用該視圖且要求返回瀏覽模式的中繼資料時,那麼SQL Server將向DBLIB和OLE DB APIS返回視圖的中繼資料資訊。例如,建立具有簡單SELECT語句的視圖。當需要頻繁地查詢列的某種組合時,簡單視圖非常有用。本例建立一個名為view_Students的視圖,用於顯示學生的姓名、年齡、系別,其文法如下:USE StudentGOCREATE VIEW view_StudentsASSELECT Sname, Sage, SdptFROM StudentsInfoGO
1.3.2 修改視圖對於已經存在的視圖,讀者可以在“視圖設計器”中對其進行修改。右擊需要修改的視圖,選擇“設計檢視”命令,就可以開啟“視圖設計器”。讀者可以根據自己的需要對視圖進行修改,過程與添加視圖相似。此外,也可以使用Transact-SQL語句中的ALTER VIEW語句修改視圖。使用Transact- SQL語句DROP VIEW刪除視圖的文法形式如下: ALTER VIEW
view_name [(
column[,...
n])] [WITH ENCRYPTION] AS
select_statement [ WITH CHECK OPTION ]其中各參數的含義與建立視圖時所使用的基本相同,這裡就不再重複了。
1.3.3 刪除視圖 有相關許可權的使用者,可以將已經存在的視圖刪除。刪除視圖後,表和視圖所基於的資料不受到影響。讀者可以在企業管理器中刪除視圖:右擊要刪除的視圖,在彈出的捷徑功能表中選擇“刪除”命令,開啟“除去對象”對話方塊,4-18所示,單擊“全部除去”按鈕則將視圖刪除。 圖4-18 確認刪除視圖 此外,也可以使用Transact-SQL語句中的ALTER VIEW語句修改視圖。使用Transact- SQL語句DROP VIEW刪除視圖的文法形式如下:DROP VIEW {
view_name} [,…n]其中,
view_name用於指定要刪除的視圖名稱。可以使用該命令同時刪除多個視圖,只需在要刪除的視圖名稱之間用逗號隔開即可。