最新的Web开发教程
 

SQL视图


视图是一个虚表。

本章介绍如何创建,更新和删除视图。


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

Note:视图总是显示了最新的数据! 数据库引擎重新创建数据,使用视图的SQL语句,每一个用户查询视图的时间。


SQL CREATE VIEW例子

如果你有Northwind数据库可以看到,它在默认情况下安装了几个观点。

认为“当前产品列表”从列表中的所有活动产品(未停产的产品) "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年请注意,此观点来自所谓的“产品销售为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

现在,我们要添加"Category"栏的“当前产品列表”的说法。 我们将更新与下面的SQL视图:

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

SQL删除视图

您可以删除使用DROP VIEW命令的视图。

SQL DROP VIEW语法

DROP VIEW view_name