在本教學中,將瞭解視圖以及如何管理視圖,包括:創建新視圖,刪除視圖以及通過視圖更新基礎表的數據。
使用SELECT語句查詢一個或多個表中的數據時,將獲得結果集。
例如,以下語句返回products
和 brands
表中所有產品的產品名稱,品牌和價格:
SELECT
product_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.brands b
ON b.brand_id = p.brand_id;
下次,如果要獲得相同的結果集,可以將此查詢語句保存到文本檔中,打開它,然後再次執行。
SQL Server提供了一種通過視圖將此查詢保存在資料庫目錄中的更好方法。
視圖是存儲在資料庫目錄中的命名查詢,允許客戶端在之後引用它。
因此,上面的查詢可以使用CREATE VIEW語句存儲為視圖,如下所示:
CREATE VIEW sales.product_info
AS
SELECT
product_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.brands b
ON b.brand_id = p.brand_id;
稍後,可以像SELECT
表一樣引用SELECT
語句中的視圖,如下所示:
SELECT * FROM sales.product_info;
收到此查詢時,SQL Server執行以下查詢:
SELECT
*
FROM (
SELECT
product_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.brands b
ON b.brand_id = p.brand_id;
);
根據定義,視圖不存儲除索引視圖之外的數據。
視圖可以包含來自使用連接的多個表的列,也可以只包含單個表的列的子集。 這使得視圖對於抽象或隱藏複雜查詢很有用。
下圖說明瞭包含多個表中列的視圖:
視圖的優點
一般來說,視圖有以下優點:
安全
您可以限制用戶直接訪問表,並允許他們通過視圖訪問數據子集。
例如,可以允許用戶通過視圖訪問客戶姓名,電話,電子郵件,但限制他們訪問銀行帳戶和其他敏感資訊。
簡單
關係資料庫可以具有許多具有複雜關係的表,例如,一對一和一對多使得難以導航。
但是,可以使用一組視圖簡化具有連接和條件的複雜查詢。
一致性
有時,需要在每個查詢中編寫複雜的公式或邏輯。為了使其一致,可以隱藏視圖中的複雜查詢邏輯和計算。
定義視圖後,可以從視圖中引用邏輯,而不是在單獨的查詢中重寫它。
在SQL Server中管理視圖的相關主題如下 -
- 創建新視圖 - 演示如何在SQL Server資料庫中創建新視圖。
- 重命名視圖 - 瞭解如何使用SQL Server Management Studio或Transact-SQL命令重命名視圖。
- 查看列出視圖 - 演示如何列出SQL Server資料庫中所有視圖的幾種方法。
- 獲取視圖資訊 - 演示如何獲取有關視圖的資訊。
- 刪除視圖 - 指導如何使用
DROP VIEW
語句從資料庫中刪除一個或多個視圖。 - 創建索引視圖 - 演示如何針對具有不頻繁數據修改的表創建索引視圖,以優化視圖的性能。
上一篇:
SQL Server約束
下一篇:
SQL Server存儲過程