- SQL Server 2016 從入門到實戰(視頻教學版)
- 孫亞男
- 4599字
- 2019-12-12 17:28:46
5.2 使用管理器管理視圖
用戶可以使用SQL Server Management Studio或T-SQL在SQL Server 2016中創建視圖,將視圖用于以下用途:
(1)集中、簡化和自定義每個用戶對數據庫的認識。
(2)用作安全機制,方法是允許用戶通過視圖訪問數據,而不授予用戶直接訪問底層基表的權限。
(3)提供向后兼容接口來模擬架構已更改的表。
5.2.1 創建新視圖
在數據庫中創建了一個或者多個表之后,就可以創建視圖了,可以使用視圖這種數據庫對象以指定的方式查詢一個或者多個表中的數據。
(1)限制和局限:只能在當前數據庫中創建視圖,視圖最多可以包含1024列。
(2)權限:要求在數據庫中具有CREATE VIEW權限,并具有在其中創建視圖的架構的ALTER權限。
使用查詢和視圖設計器創建視圖的步驟如下:
步驟01 在【對象資源管理器】中展開要創建新視圖的數據庫。
步驟02 右擊【視圖】文件夾,然后單擊【新建視圖…】命令,如圖5.1所示。

圖5.1 新建視圖
步驟03 在【添加表】對話框中,從圖5.2所示的選項卡之一選擇要在新視圖中包含的元素:“表”“視圖”“函數”“同義詞”。

圖5.2 添加表
步驟04 單擊【添加】按鈕,再單擊【關閉】按鈕。
步驟05 在【關系圖】窗格中,選擇要在新視圖中包含的列或其他元素,如圖5.3所示。

圖5.3 關系圖窗格
步驟06 在【條件】窗格中,選擇列的其他排序或篩選條件。
步驟07 在【文件】菜單上,單擊【保存view name】按鈕。
步驟08 在【選擇名稱】對話框中,輸入新視圖的名稱并單擊【確定】按鈕,如圖5.4所示。

圖5.4 視圖名稱
完成后,創建的視圖View_stu如圖5.5所示。

圖5.5 視圖View_stu
5.2.2 查看視圖信息
1.查詢和視圖設計器工具
當打開視圖的定義、顯示查詢或視圖的結果或者創建或打開查詢時,查詢和視圖設計器將會打開。它由4個不同的窗格組成:
(1)【關系圖】窗格以圖形形式顯示通過數據連接選擇的表或表值對象,同時也會顯示它們之間的連接關系。
(2)【條件】窗格用于指定查詢選項(例如要顯示哪些數據列、如何對結果進行排序以及選擇哪些行等),可以通過將選擇輸入到一個類似電子表格的網格中來進行指定。
(3)用戶可以使用SQL窗格創建自己的SQL語句,也可以使用【條件】窗格和【關系圖】窗格創建語句,在后面這種情況下將在SQL窗格中相應地創建SQL語句。生成查詢時,SQL窗格將自動更新并重新設置格式以便于閱讀。
(4)【結果】窗格顯示最近執行的選擇查詢的結果。
這些窗格對于處理查詢和視圖非常有用。當用戶打開一個視圖或查詢時,以上部分或全部窗格將隨之打開。所打開的窗格取決于【選項】對話框中的設置以及用戶所連接的數據庫管理系統,默認設置是4個窗格全都打開。
在對象資源管理器中,右擊要打開的視圖,然后單擊【設計】菜單項或【打開視圖】菜單項即可打開視圖,如圖5.6所示。

圖5.6 打開視圖
2.【關系圖】窗格
【關系圖】窗格以圖形形式顯示用戶通過數據連接選擇的表或表值對象,同時也會顯示它們之間的連接關系。在【關系圖】窗格中可以進行的操作包括添加或移除表和表值對象,并指定要輸出的數據列和創建或修改表和表值對象之間的連接。
當在【關系圖】窗格中進行更改時,【條件】窗格和SQL窗格會自動更新以反映所做的更改。例如,如果在【關系圖】窗格內的表或表值對象窗口中選擇某個要輸出的列,查詢和視圖設計器會將該數據列添加到【條件】窗格中以及SQL窗格內的SQL語句中。
每個表或表值對象在【關系圖】窗格中均作為單獨的窗口出現。每個矩形的標題欄中的圖標表示該矩形所代表的對象類型,如表5.1所示。
表5.1 關系圖對象類型

(1)表
列出可以添加到【關系圖】窗格中的表。若要添加某個表,則選擇該表,再單擊【添加】菜單項。若要同時添加多個表,可以先選擇這些表,再單擊【添加】菜單項。
(2)視圖
列出可以添加到【關系圖】窗格中的視圖。若要添加某個視圖,則選擇該視圖,再單擊【添加】菜單項。若要同時添加多個視圖,可以先選擇這些視圖,再單擊【添加】命令。
(3)函數
列出可以添加到【關系圖】窗格中的用戶定義的函數。若要添加某個函數,則選擇該函數,再單擊【添加】命令。若要同時添加多個函數,可以先選定這些函數,再單擊【添加】命令。
(4)本地表
列出由查詢創建的表而不是數據庫中的表。
(5)同義詞
列出可以添加到【關系圖】窗格中的同義詞。若要添加某個同義詞,則選擇該同義詞,再單擊【添加】命令。若要同時添加多個同義詞,可以先選擇這些同義詞,再單擊【添加】命令。
如果查詢涉及連接,在連接所涉及的數據列之間將顯示一條連接線。若沒有顯示連接的數據列(例如,表或表值對象窗口已最小化或者此連接涉及表達式),則查詢和視圖設計器會將連接線放在表示表或表值對象的矩形的標題欄中。查詢和視圖設計器為每個連接條件顯示一條連接線。
連接線中間的圖標形狀指示表或表結構對象的連接方式。若連接子句使用等于(=)以外的運算符,則該運算符將顯示在連接線圖標中。在連接線中顯示的圖標如表5.2所示。
表5.2 連接線中顯示的圖標

連接線末端的圖標表示連接的類型。連接的類型以及可在連接線末端顯示的圖標如表5.3所示。
表5.3 連接線末端顯示的圖標

3.【條件】窗格
【條件】窗格用于指定查詢選項(例如要顯示哪些數據列、如何對結果進行排序以及選擇哪些行等),可以通過將選擇輸入到一個類似電子表格的網格中來進行指定。在【條件】窗格中,可以指定:
● 要顯示的列以及列名別名。
● 列所屬的表。
● 計算列的表達式。
● 查詢的排序順序。
● 搜索條件。
● 分組條件,包括用于摘要報告的聚合函數。
● UPDATE或INSERT INTO查詢的新值。
● INSERT FROM查詢的目標列名。
在【條件】窗格中所做的更改將自動反映到【關系圖】窗格和SQL窗格中。同樣,【條件】窗格也會自動更新以反映在其他窗格中所做的更改。
4.SQL窗格
可以使用SQL窗格創建自己的SQL語句,也可以使用【條件】窗格和【關系圖】窗格創建語句,在后面這種情況下將在SQL窗格中相應地創建SQL語句。生成查詢時,SQL窗格將自動更新并重新設置格式以便于閱讀。
若要打開SQL窗格,可以首先打開查詢和視圖設計器(在服務器資源管理器中選擇相應的數據庫對象后,在【數據庫】菜單中單擊【新建查詢】),然后在【查詢設計器】菜單中指向【窗格】,再單擊【SQL】。在SQL窗格中,可以進行以下操作:
(1)通過輸入SQL語句創建新查詢。
(2)根據在【關系圖】窗格和【條件】窗格中進行的設置,對查詢和視圖設計器創建的SQL語句進行修改。
(3)輸入語句以利用所使用數據庫的特有功能。
5.【結果】窗格
【結果】窗格顯示最近執行的SELECT查詢的結果(其他查詢類型的結果在消息框中顯示)。若要打開【結果】窗格,可以打開或創建一個查詢或視圖,或者返回某個表的數據。如果默認情況下不顯示【結果】窗格,可以在【查詢設計器】菜單中指向【窗格】,再單擊【結果】命令。用戶可以在【結果】窗格中執行的操作如下:
(1)在類似于電子表格的網格中查看最近執行的SELECT查詢的結果集。
(2)對于顯示單個表或視圖中的數據的查詢或視圖,可以編輯結果集中各個列的值、添加新行以及刪除現有的行。
6.SQL編輯器
使用SQL編輯器可以編輯現有的存儲過程、函數、觸發器和SQL腳本。當用戶打開上述任何對象時,此窗口將打開。若要創建要對數據源運行的新的SQL語句,可以使用查詢設計器的SQL窗格。SQL編輯器提供了許多有用的SQL文本編輯功能,包括:
(1)對SQL關鍵字進行顏色編碼,以最大限度地減少語法和拼寫錯誤。
(2)生成主干存儲過程和觸發器。
(3)提供有用的編輯功能,包括剪切、復制、粘貼和拖動操作。
(4)更改編輯器的行為(通過在【工具】菜單中選擇【選項】)以修改虛空格、自動換行、行號和制表符大小。
(5)幫助管理調試斷點。
7.獲取有關視圖的信息
在SQL Server 2016中,通過使用SQL Server Management Studio或T-SQL可以獲取有關視圖的定義或屬性的信息。
(1)使用對象資源管理器獲取視圖屬性
使用對象資源管理器獲取視圖屬性的步驟為:在【對象資源管理器】中,單擊包含要查看屬性的視圖的數據庫旁邊的加號,單擊加號以展開【視圖】文件夾,然后右擊要查看其屬性的視圖,選擇【屬性】菜單項,打開如圖5.7所示的【視圖屬性】對話框。

圖5.7 對象資源管理器中視圖的信息
【視圖屬性】對話框中顯示以下屬性。
● 服務器:當前服務器實例的名稱。
● 數據庫:包含此視圖的數據庫的名稱。
● 用戶:此連接的用戶名。
● Schema:顯示視圖所屬的架構。
● 創建日期:顯示視圖的創建日期。
● 名稱:當前視圖的名稱。
● 系統對象:指示視圖是否為系統對象,值為True和False。
● ANSI NULL:指示創建對象時是否選擇了ANSI NULL選項。
● 帶引號的標識符:指示創建對象時是否選擇了【帶引號的標識符】選項。
● 架構已綁定:指示視圖是否綁定到架構,值為True和False。
● 已加密:指示視圖是否已加密,值為True和False。
(2)使用視圖設計器工具獲取視圖屬性
① 在【對象資源管理器】中,展開包含要查看屬性的視圖的數據庫,然后展開【視圖】文件夾。
② 右擊要查看其屬性的視圖,然后選擇【設計】菜單項。
③ 右擊【關系圖】窗格中的空白區域,再單擊【屬性】命令,出現如圖5.8所示的【屬性】窗格。

圖5.8 視圖設計器中視圖的信息
【屬性】窗格中顯示以下屬性。
● (名稱):當前視圖的名稱。
● 服務器名稱:當前服務器實例的名稱。
● 架構:顯示視圖所屬的架構。
● 數據庫名稱:包含此視圖的數據庫的名稱。
● 說明:對當前視圖的簡短說明。
● GROUP BY擴展:指定對于基于聚合查詢的視圖,附加選項可用。
● SQL注釋:顯示SQL語句的說明。若要查看或編輯完整的說明,可以單擊相應的說明,再單擊屬性右側的省略號(…)。注釋可以包含視圖使用者和使用時間等信息。
● Top規范:展開此項可顯示Top、“百分比”“表達式”和“等同值”屬性。
Top:指定視圖將包括TOP子句,該子句只返回結果集中的前n行或前百分之n行。默認情況下,視圖將在結果集中返回前10行。使用此項可更改返回的行數或指定不同的百分比。
表達式:顯示視圖將返回的百分比(如果“百分比”設置為“是”)或記錄(如果“百分比”設置為“否”)。
百分比:指定查詢將包含一個TOP子句,僅返回結果集中前百分之n行。
等同值:指定視圖將包括WITH TIES子句。如果視圖包含ORDER BY子句和基于百分比的TOP子句,WITH TIES將非常有用。若設置了該選項,并且百分比截止位置在一組行的中間,且這些行在ORDER BY子句中具有相同的值,則視圖將會擴展,以包含所有這樣的行。
● 綁定到架構:防止用戶以會使視圖定義失效的任何方式修改影響此視圖的基礎對象。
● 非重復值:指定查詢將在視圖中篩選出重復值。當只使用表中的部分列并且這些列可能包含重復值時,或者當連接兩個或更多表的過程會在結果集中產生重復行時,此選項非常有用。選擇該選項等效于向SQL窗格內的語句中插入關鍵字DISTINCT。
● 更新規范:展開此項可顯示“使用視圖規則更新”和“Check選項”屬性。
● 輸出所有列:顯示所有列是否都由所選視圖返回。這是在創建視圖時設置的。
5.2.3 創建基于視圖的視圖
SQL支持創建基于視圖的視圖。例如,在上述示例中創建了View_stu視圖,在該視圖上還可以創建視圖,如圖5.9所示。

圖5.9 創建基于視圖的視圖
5.2.4 刪除視圖
當一個視圖不再需要時,可以將其從數據庫中刪除,以回收當前使用的磁盤空間。這樣數據庫中的任何對象都可以使用此回收空間。
(1)限制和局限:刪除視圖時,將從系統目錄中刪除視圖的定義和有關視圖的其他信息。還將刪除視圖的所有權限。使用DROP TABLE刪除的表上的任何視圖都必須使用DROP VIEW顯式刪除。
(2)權限:需要有對SCHEMA的ALTER權限或對OBJECT的CONTROL權限。
從數據庫中刪除視圖的步驟如下:
步驟01 在【對象資源管理器】中展開包含要刪除的視圖的數據庫,然后展開【視圖】文件夾。
步驟02 右擊要刪除的視圖,然后單擊【刪除】命令,如圖5.10所示。
步驟03 在【刪除對象】對話框中單擊【確定】按鈕。

圖5.10 刪除視圖
- Learning ROS for Robotics Programming(Second Edition)
- Java面向對象思想與程序設計
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- Python神經網絡項目實戰
- Mastering Ubuntu Server
- SAS數據統計分析與編程實踐
- Flux Architecture
- C#程序設計
- JavaScript 程序設計案例教程
- INSTANT Sinatra Starter
- Visual Basic程序設計教程
- GameMaker Essentials
- FFmpeg開發實戰:從零基礎到短視頻上線
- 測試架構師修煉之道:從測試工程師到測試架構師
- Learning Kotlin by building Android Applications