SQL Server視圖

在本教學中,將瞭解視圖以及如何管理視圖,包括:創建新視圖,刪除視圖以及通過視圖更新基礎表的數據。

使用SELECT語句查詢一個或多個表中的數據時,將獲得結果集。

例如,以下語句返回productsbrands表中所有產品的產品名稱,品牌和價格:

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存儲過程