1 视图
1.1 常见应用场景
重用SQL语句,特别是针对复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节
保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据
1.2 视图的规则和限制
视图名称必须唯一,视图数目没有限制
创建视图必须具有足够的访问权限。构建视图的查询语句中涉及的所有表都必须拥有访问权限
视图可以嵌套,即可以利用从其他视图中检索数据的查询来构建一个视图
视图可以使用ORDER BY,但会被覆盖。ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖
视图不能索引,也不能有关联的触发器或默认值
视图可以和表一起使用。比如,编写一条联结表和视图的SELECT语句
部署使用视图(特别是量大)的时候需要进行测试,每次使用视图都必须处理检索,如果使用复杂视图(包含多个联结和过滤)、嵌套视图时,性能下降将十分明显。
2 视图的使用
2.1 创建视图
CREATE VIEW productcustomers AS SELECT
cust_name,
cust_contact,
prod_id
FROM
customer,
`order`,
order_item
WHERE
customer.cust_id = `order`.cust_id
AND order_item.order_num = `order`.order_num
#创建视图productcustomers,它联结三个表以便返回已订购了任意产品的所有客户的列表
#SELECT * FROM productcustomers将列出订购了任意产品的客户
#生成视图的SELECT语句支持字段格式化、过滤、新增字段(比如计算字段)等语法
#针对视图的查询跟针对表的查询一样
2.2 查看视图
SHOW CREATE VIEW productcustomers
#查看创建视图的语句
2.3 删除视图
DROP VIEW productcustomers
#删除视图
2.4 更新视图
CREATE OR REPLACE VIEW productcustomers AS SELECT
cust_name,
cust_contact,
prod_id
FROM
customer,
`order`,
order_item
WHERE
customer.cust_id = `order`.cust_id
AND order_item.order_num = `order`.order_num
#更新视图,可以先DROP再CREATE。也可以使用CREATE OR REPLACE,若视图不存在则新建,若视图存在则更新
2.5 更新数据
针对视图执行INSERT、UPDATE和DELETE,将直接更新其基表。但是如果视图定义中包含如下操作,将不允许进行更新、插入、删除操作
分组(使用GROUP BY和HAVING)
联结
子查询
并
聚集函数
DISTINCT
导出(计算)列
文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




