MySQL视图机制

核心内容:

1、视图的概念

2、视图的优缺点

3、什么时候使用视图

什么是视图

视图(View)是从一个或多个基本表(或视图)导出的表,它与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据;当基本表中的数据发生变化,从视图中查询出的数据也就随之改变;

  • 单表视图:一般用于查询和修改,会改变基本表的数据;
  • 多表视图:一般用于查询不会改变基本表的数据。

视图的作用

1.视图能够简化用户的操作;

2.视图使用户能以多种角度看待同一数据;

3.视图对重构数据库提供了一定程度的逻辑独立性

4.视图能够对机密数据提供安全保护;(即视图中只包括可以给开发人员查看的数据,机密数据不包括在视图内)

具体到实际应用中,视图的优点有:

  • 提高了重用性,就像一个函数。如果需要频繁获取特定的数据集,只需要创建对应的视图即可。(对应上述第二点)
  • 对数据库重构,却不影响程序的运行。对于删除的表,可以创建一个对应的视图,保证程序中读取它不会出错。(对应上述第三点)
  • 提高了安全性能。可以对不同的用户,设定不同的视图。(对应上述第四点)

当需要多次重复输入相同的语句、需要不同的表字段聚合,进行信息重组、安全需要或需要兼容老的表等情况,就可以利用视图来简化sql查询,提高开发效率

不过事物皆有两面性,视图也存在它的缺点:

  • 视图的性能差,数据库必须把视图查询转化成对基本表的查询(视图不存放数据,只存定义),如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。
  • 视图也存在着修改限制,当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的

视图的SQL语句

1、创建视图

语法:CREATE VIEW  [view_name]  AS [定义视图的查询语句]

mysql其他数据库的视图 mysql数据库视图的优缺点_mysql其他数据库的视图

 

 2、查看视图

视图的查看语句和表的查看语句相同(视图就是一种特殊的表)。

语法:SHOW TABLES

3、修改视图(在视图中查询)

(1)在视图中进行查询和在基本表中进行查询的操作相同;

(2)修改视图和修改表的操作相同(使用UPDATE语句),修改视图中的数据,会引起基本表中的数据也随之修改。

  • 如果修改视图的时候,引起的数据修改,涉及一张基本表中的数据修改,那么视图修改是可以成功的。
  • 如果修改视图的时候,引起的数据修改,涉及两张及以上基本表中的数据修改,那么视图修改无法成功,会报如下错误:

 

mysql其他数据库的视图 mysql数据库视图的优缺点_mysql_02

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