MySQL:视图
视图是虚拟的表,只包含使用时动态检索数据的查询。
视图的使用方式和普通的表一样,那么为什么要使用视图呢?
1、视图的好处
回忆在联结讲解中举的例子:列出订购物品TNT2的所有客户信息,如果又需要列出物品ABC的所有信息呢,那么同样的SQL要再写一次,如果能够把整个查询包装成一个视图,那么就可以重用SQL,轻松地检索数据。另外,使用视图也可以保护数据,授予表的特定部分的访问权限而不是整张表的访问权限。
2、视图的使用
例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`
订购了TNT2的用户信息:SELECT * FROM productcustomers WHERE prod_id='TNT2'
订购了ANV02的用户信息:SELECT * FROM productcustomers WHERE prod_id='ANV02'
例2:利用视图格式化检索后的数据,使用时可以直接用
供应商的名字vend_name和地区vend_city两列存为 “供应商名(地区)”的格式
CREATE VIEW vendlocation AS
SELECT CONCAT(RTRIM(vend_name), '(', RTRIM(vend_city), ')') AS vend_title
FROM vendors ORDER BY vend_name
3、更新视图
更新一个视图将更新其基表,但是MySQL确定不了被更新的基数据的情况下不允许更新,也就是说存在分组、联结、子查询、并等操作都不允许视图的更新。