22.1 视图的使用
22.1.1 视图简介
就像在检索数据使用AS关键字来指定别名一样,视图其实就类似AS的功能,只是前者是作用在表中,即将查询返回的结果包装成一个虚拟的表(类似别名),这就是视图的作用。
视图一般用于以下情况:
- 重复SQL语句
- 简化SQL操作,编写好后不必知道其查询细节
- 使用表的组成部分而不是整个表
- 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
- 重要的是知道视图仅仅是用来查看存储在别处的数据的一种设施
22.1.2 视图的规则与限制
以下为视图创建和使用的一些最常见的规则和限制:
- 与表一样,视图必须命名唯一(视图不与其他视图或表名相同)
- 视图可嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图
- 视图不能索引,也不能有关联的触发器或默认值。
- 视图可以和表一起使用。例如,编写一条联结表和视图的SELECT语句。
22.2 视图语句
视图的语句大致有以下几个:
创建语句:
CREATE VIEW name;
查看视图语句:
SHOW CREATE VIEW view_name;
删除视图:
DROP VIEW view_name;
-
更新视图:
- 可以先使用DROP再用CREATE
- 也可以直接使用
CREATE OR REPLACE VIEW
#创建视图
CREATE VIEW product_customers 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;
#使用视图
SELECT cust_name, cust_contact
FROM product_customers
WHERE prod_id = 'TNT2';
22.3 更新视图
一般将视图用于检索(SELECT语句),而不用于更新(INSERT、UPDATE和DELETE);当然视图的更新也是是情况而定的,如果MySQL不 能正确地确定被更新的基数据,则不允许更新(包括插入和删除)。