MySQL什么是视图以及注意事项

发表于:2019-07-07

CREATE VIEW

视图

视图是一张虚拟表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。

简单的说视图就是简化 复杂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 操作

总结

视图很简单,其实就是编程当中的一个语法糖。过多的使用视图并非有好处,还是要根据场景适当的使用。在使用视图之前应该进行测试,因为过多的嵌套视图性能下降得越厉害。

数据库