//视图
SELECT cust_name,cust_contact
FROM ProductCustomers//视图,包含一个查询,是虚拟的表
WHERE prod_id='RGAN01'
//使用视图的原因
1.重用SQL语句
2.简化复杂的SQL操作,相比联结不用关心查询细节
3.使用表的一部分而不是整个表
4.保护数据,授予用户部分访问权限
5.更改数据格式和表示,视图可以返回不同数据格式和表示的数据
//视图的规则和限制
1.唯一命名,不能重复
2.可以嵌套视图,但会降低性能
3.许多DBMS禁止视图查询时使用ORDER BY
4.有些DBMS要求对返回列进行命名,列是计算字段还要使用别名
5.视图不能索引,不能有触发器和默认值
6.有些DBMS把视图作为只读的查询
7.有些DBMS不允许视图导致行不再属于视图的插入和更新
//创建视图,利用视图简化复杂的联结
CREATE VIEW ProductCustomers AS
SELECT cust_name,cust_contact,prod_id
FROM Customers,Orders,OrderItems
WHERE Customers.cust_id=Orders.cust_id
AND OrderItems.order_num=Orders.order_num
//用视图格式化检索出的数据
CREATE VIEW VendorLocations AS
SELECT RTRIM(vend_name) + ' ('+RTRIM(vend_country)+') '
AS vend_title
FROM Vendors
//用视图过滤不想要的数据
CREATE VIEW CustomerEMailList AS
SELECT cust_id,cust_name,cust_email
FROM Customers
WHERE cust_email IS NOT NULL//过滤掉空值
//使用视图与计算字段
CREATE VIEW OrderItemsExpanded AS
SELECT order_num,
prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM OrderItems