Latest web development tutorials

SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW 語句

視圖是可視化的表。

本章講解如何創建、更新和刪除視圖。


SQL CREATE VIEW 語句

在SQL 中,視圖是基於SQL 語句的結果集的可視化的表。

視圖包含行和列,就像一個真實的表。 視圖中的字段就是來自一個或多個數據庫中的真實的表中的字段。

您可以向視圖添加SQL 函數、WHERE 以及JOIN 語句,也可以呈現數據,就像這些數據來自於某個單一的表一樣。

SQL CREATE VIEW 語法

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

註釋:視圖總是顯示最新的數據!每當用戶查詢視圖時,數據庫引擎通過使用視圖的SQL 語句重建數據。


SQL CREATE VIEW 實例

樣本數據庫Northwind 擁有一些被默認安裝的視圖。

視圖"Current Product List" 會從"Products" 表列出所有正在使用的產品(未停產的產品)。 這個視圖使用下面的SQL 創建:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

我們可以像這樣查詢上面這個視圖:

SELECT * FROM [Current Product List]

Northwind 樣本數據庫的另一個視圖會選取"Products" 表中所有單位價格高於平均單位價格的產品:

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

我們可以像這樣查詢上面這個視圖:

SELECT * FROM [Products Above Average Price]

Northwind 樣本數據庫的另一個視圖會計算在1997 年每個種類的銷售總數。 請注意,這個視圖會從另一個名為"Product Sales for 1997" 的視圖那裡選取數據:

CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

我們可以像這樣查詢上面這個視圖:

SELECT * FROM [Category Sales For 1997]

我們也可以向查詢添加條件。 現在,我們僅僅需要查看"Beverages" 類的銷售總數:

SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'


SQL 更新視圖

您可以使用下面的語法來更新視圖:

SQL CREATE OR REPLACE VIEW 語法

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

現在,我們希望向"Current Product List" 視圖添加"Category" 列。 我們將通過下列SQL 更新視圖:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No


SQL 撤銷視圖

您可以通過DROP VIEW 命令來刪除視圖。

SQL DROP VIEW 語法

DROP VIEW view_name