mysql-09 视图
视图是从一个或几个基本表(或视图)中导出的表,是一个虚表。数据库中之存放视图的定义,而不存放视图对应的数据,数据仍存放于原基本表中。
注意点
1)一旦基本表中数据发生变化,从视图中查询出的数据也会随之变化;
2)基本表别称:实表;
3)视图别称:虚表;
4)视图属性列与基本表的属性列所对应,若修改了基本表的结构,最好是删除由该基本表导出的视图后再重建;
视图的作用
有了视图,就可以灵活地查看基本表中我们所需要的部分信息。例如网络工程系的老师,需要查看网络工程系学生时,总不好每回都执行一次查询语句;定义一个网络系学生视图后,直接看这个视图就很方便。
1)简化用户操作
2)多角度看同一数据
3)机密数据安全保护(不同用户不同视图)
4)其他(略)
举例
1)建立视图
1 | #建立信息学生的视图,,且要求进行插入、修改和删除操作时,仍需保证该视图只有信息系的学生。 |
上例注意点
- select语句不执行,上述语句只是将视图定义存到了数据字典;
- with check option使得之后对该视图进行插入、修改和删除操作时,RDBMS会自动加上sdept=’is’的条件;
2)建立分组视图
1 | #将学号和平均成绩定义为一个视图 |
3)删除视图
1 | #删除is_student视图 |
注意点
- 删除某视图时,若该视图还导出了其它视图,则需加cascade级联删除;
- 基本表删除后,由其导出的视图无法使用,则需要执行删除操作,清除的是视图在数据字典的定义;
4)查询视图
- 视图定义好之后,用户可以向查询基本表一样查询视图;
- 视图消解:将视图定义中的子查询和用户另加的查询结合,转换为对基本表的查询,这转换过程为视图消解;
5)更新视图
- 由于视图实际上不存在,因此更新视图实际要转化为对基本表进行更新;
- 在RDBMS中,并非所有视图均可进行更新(有些视图更新无法唯一地转换为对应基本表的更新);
- 操作语法和对基本表一样,此处略