MySQL视图机制
核心内容:
1、视图的概念
2、视图的优缺点
3、什么时候使用视图
什么是视图
视图(View)是从一个或多个基本表(或视图)导出的表,它与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据;当基本表中的数据发生变化,从视图中查询出的数据也就随之改变;
- 单表视图:一般用于查询和修改,会改变基本表的数据;
- 多表视图:一般用于查询,不会改变基本表的数据。
视图的作用
1.视图能够简化用户的操作;
2.视图使用户能以多种角度看待同一数据;
3.视图对重构数据库提供了一定程度的逻辑独立性;
4.视图能够对机密数据提供安全保护;(即视图中只包括可以给开发人员查看的数据,机密数据不包括在视图内)
具体到实际应用中,视图的优点有:
- 提高了重用性,就像一个函数。如果需要频繁获取特定的数据集,只需要创建对应的视图即可。(对应上述第二点)
- 对数据库重构,却不影响程序的运行。对于删除的表,可以创建一个对应的视图,保证程序中读取它不会出错。(对应上述第三点)
- 提高了安全性能。可以对不同的用户,设定不同的视图。(对应上述第四点)
当需要多次重复输入相同的语句、需要不同的表字段聚合,进行信息重组、安全需要或需要兼容老的表等情况,就可以利用视图来简化sql查询,提高开发效率。
不过事物皆有两面性,视图也存在它的缺点:
- 视图的性能差,数据库必须把视图查询转化成对基本表的查询(视图不存放数据,只存定义),如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。
- 视图也存在着修改限制,当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。
视图的SQL语句
1、创建视图
语法:CREATE VIEW [view_name] AS [定义视图的查询语句]
2、查看视图
视图的查看语句和表的查看语句相同(视图就是一种特殊的表)。
语法:SHOW TABLES
3、修改视图(在视图中查询)
(1)在视图中进行查询和在基本表中进行查询的操作相同;
(2)修改视图和修改表的操作相同(使用UPDATE语句),修改视图中的数据,会引起基本表中的数据也随之修改。
- 如果修改视图的时候,引起的数据修改,涉及一张基本表中的数据修改,那么视图修改是可以成功的。
- 如果修改视图的时候,引起的数据修改,涉及两张及以上基本表中的数据修改,那么视图修改无法成功,会报如下错误:
4、删除视图
语法:DROP VIEW IF EXISTS [view_name]
参考资料:
1、https://hillzhang1999.gitee.io/2020/05/29/shu-ju-ku-fu-xi-ji-yu-mysql/#toc-heading-118
2、https://www.bilibili.com/video/BV1UQ4y1P7Xr?p=13