注:一个数据库小白的成长之路
1.使用视图简化复杂的联结
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;
创建一个名为productcustomers的视图,它联结三个视图
SELECT cust_name, cust_contact
FROM productcustomers
WHERE prod_id = 'TNT2';
检索订购产品TNT2的客户
2.用视图重新格式化检索出的数据
CREATE VIEW vendorlocations AS
SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') AS vend_title
FROM vendors
ORDER BY vend_name;
SELECT *
FROM vendorlocations;
创建一个格式化数据的视图vendorlocations,并且使用它
3.用视图过滤不想要的数据
CREATE VIEW customeremaillist AS
SELECT cust_id, cust_name, cust_contact
FROM customers
WHERE cust_email IS NOT NULL;
SELECT *
FROM customeremaillist;
创建一个过滤没有电子邮件的客户的视图customeremailist,并且使用它
4.使用视图与计算字段
CREATE VIEW orderitemsexpanded AS
SELECT order_num, prod_id, quantity, item_price, quantity*item_price AS expanded_price
FROM orderitems;
SELECT *
FROM orderitemsexpanded
WHERE order_num = 20005;
创建一个计算每种物品的总价格的视图,并且检索订单20005的详细内容
5.删除视图
DROP VIEW viewname;
注意
- 视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。在添加或者更改这些表中的数据时,视图将返回改变过的数据。
- 更新一个视图将更新其基表。如果你对视图增加或者删除行,实际上是对其基表增加或删除行。
- 一般,应该将视图用于索引(SELECT语句)而不用于更新(INSERT、UPDATE和DELETE语句)
- 与表一样,视图必须唯一命名