视图
视图是一张虚拟表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
简单的说视图就是简化 复杂SELECT
语句。
下面来看看一个例子更清楚的认识视图。
这是一个联合查询,不知道没关系,只需知道这条语句很长就行了。
SELECT comment.content from comment, users WHERE comment.uid = users.uid AND comment.type = 1;
创建视图
CREATE VIEW view_comment AS SELECT comment.content from comment, users WHERE comment.uid = users.uid AND comment.type = 1;
使用视图, 这下明白了吧,视图就是简化一条复杂化的语句。
SELECT * FROM view_comment;
为什么使用视图
- 重用SQL语句
- 简化复杂的SQL操作, 可以方便地重用它而不必知道它的基本细节
- 使用表的组成部分而不是整个表
- 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
- 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据
视图的基本命令
创建视图, 视图的创建很简单, view_name是自定义虚拟表名称,注意不能与现有重复, AS 后面是一条SQL语句。
CREATE VIEW view_name AS SELECT * FROM users;
使用视图, 视图的使用很简单,跟平常检索数据一样, 表名既是创建视图时指定的名称。
SELECT * FROM view_name;
查看视图结构
SHOW CREATE VIEW view_name;
删除视图
DROP VIEW view_name;
使用视图注意事项
视图也可以进行 insert
/ update
/ delete
, 但是有前提条件(不能使用以下限制条件):
- 分组(使用GROUP BY 和 HAVING)
- 联结
- 子查询
- 并(UNION)
- 聚集函数
- DISTINCT
- 导出(计算)列
这么多的限制,感觉人生已经达到了崩溃~ , 完全就是堵住了门口。
所以, 使用视图一般是检索数据(SELECT
)而不是用于 INSERT/UPDATE/DELETE 操作
总结
视图很简单,其实就是编程当中的一个语法糖。过多的使用视图并非有好处,还是要根据场景适当的使用。在使用视图之前应该进行测试,因为过多的嵌套视图性能下降得越厉害。