MySQL:视图

禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!

视图

假设我需要从 2 张表中提取信息,一种做法就是使用联结,并结合 WHERE 子句来过滤。不过如果这样的联结表我需要反复调用,并且我可能需要根据不同的条件进行过滤,这个时候代码量就会比较大,移植性比较差。可以直接将联结表制作为一张新的表,但是就需要为这张表的生存期进行考虑。总而言之,上述方法可能都不是很好的方法。
MySQL 5 后的版本支持视图,所谓视图就是一个虚拟的表,这个虚拟的表是针对动态检索数据时使用的。或者说,视图中不包含表中的任何列和数据,本质上是一个 SQL 查询,视图返回的数据就是基于这个查询得到的数据。对于表中数据的修改,由于本质是查询,返回的也会是修改后的数据。视图用法有什么优点呢?使用视图可以简化复杂的 SQL 语句的编写,对于语句的重用提供了方便。视图将使用表的一部分,而不是整张表,因此对于数据的保护和权限的赋予也较为方便,使用视图是也可以修改数据呈现的格式。

视图使用规则

  1. 视图名是唯一的,不能和其他视图或表共用表名;
  2. 视图的创建没有数量限制,视图的创建需要有一定的权限;
  3. 视图可以嵌套使用,在这个时候就会产生更多的开销,特别是在使用了嵌套和复杂的过滤条件;
  4. 视图创建时可以使用 ORDER BY,使其支持排序;
  5. 视图不能支持索引、触发器、默认值;

视图基操

视图创建

CREATE VIEW viewname AS

创建语句的查看

SHOW CREATE VIEW viewname;

删除视图

DROP VIEW viewname;
  • 视图允许各种更新操作,但是**分组、联结、子查询、合并、聚集函数和 DISTINCT 这些操作的视图不能更新。不过视图的主要功能是查询,更新操作较少使用。

复杂联结的视图

视图可以将联结了多个表的查询,封装成为一个动态数据查询虚拟表。

视图格式化检索数据

对于检索数据的格式化输出,可以封装成为一个动态数据查询虚拟表。

视图的过滤

可以将过滤条件封装到视图当中。

视图封装计算字段


参考资料

《MySQL Crash Course》[英] Ben Forta 著,刘晓霞 钟鸣 译,人民邮电出版社
学习MySQL出现问题Not allowed to return a result set from a trigger

posted @ 2020-05-21 23:42  乌漆WhiteMoon  阅读(277)  评论(0编辑  收藏  举报