MySQL:视图
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
视图
假设我需要从 2 张表中提取信息,一种做法就是使用联结,并结合 WHERE 子句来过滤。不过如果这样的联结表我需要反复调用,并且我可能需要根据不同的条件进行过滤,这个时候代码量就会比较大,移植性比较差。可以直接将联结表制作为一张新的表,但是就需要为这张表的生存期进行考虑。总而言之,上述方法可能都不是很好的方法。
MySQL 5 后的版本支持视图,所谓视图就是一个虚拟的表,这个虚拟的表是针对动态检索数据时使用的。或者说,视图中不包含表中的任何列和数据,本质上是一个 SQL 查询,视图返回的数据就是基于这个查询得到的数据。对于表中数据的修改,由于本质是查询,返回的也会是修改后的数据。视图用法有什么优点呢?使用视图可以简化复杂的 SQL 语句的编写,对于语句的重用提供了方便。视图将使用表的一部分,而不是整张表,因此对于数据的保护和权限的赋予也较为方便,使用视图是也可以修改数据呈现的格式。
视图使用规则
- 视图名是唯一的,不能和其他视图或表共用表名;
- 视图的创建没有数量限制,视图的创建需要有一定的权限;
- 视图可以嵌套使用,在这个时候就会产生更多的开销,特别是在使用了嵌套和复杂的过滤条件;
- 视图创建时可以使用 ORDER BY,使其支持排序;
- 视图不能支持索引、触发器、默认值;
视图基操
视图创建
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