mysql-09 视图

mysql-09 视图

  视图是从一个或几个基本表(或视图)中导出的表,是一个虚表。数据库中之存放视图的定义,而不存放视图对应的数据,数据仍存放于原基本表中。

注意点

1)一旦基本表中数据发生变化,从视图中查询出的数据也会随之变化;

2)基本表别称:实表;

3)视图别称:虚表;

4)视图属性列与基本表的属性列所对应,若修改了基本表的结构,最好是删除由该基本表导出的视图后再重建;

视图的作用

  有了视图,就可以灵活地查看基本表中我们所需要的部分信息。例如网络工程系的老师,需要查看网络工程系学生时,总不好每回都执行一次查询语句;定义一个网络系学生视图后,直接看这个视图就很方便。

1)简化用户操作

2)多角度看同一数据

3)机密数据安全保护(不同用户不同视图)

4)其他(略)

举例

1)建立视图

1
2
3
4
5
6
7
#建立信息学生的视图,,且要求进行插入、修改和删除操作时,仍需保证该视图只有信息系的学生。
create view is_student
as
select sno,sname,sage
from student
where sdept='is'
with check option;

上例注意点

  • select语句不执行,上述语句只是将视图定义存到了数据字典;
  • with check option使得之后对该视图进行插入、修改和删除操作时,RDBMS会自动加上sdept=’is’的条件;

2)建立分组视图

1
2
3
4
5
6
#将学号和平均成绩定义为一个视图
create view s_g(sno,gavg)
as
select sno,avg(grade)
from sc
group by sno;

3)删除视图

1
2
3
#删除is_student视图
drop ciew is_student
[cascade];

注意点

  • 删除某视图时,若该视图还导出了其它视图,则需加cascade级联删除;
  • 基本表删除后,由其导出的视图无法使用,则需要执行删除操作,清除的是视图在数据字典的定义;

4)查询视图

  • 视图定义好之后,用户可以向查询基本表一样查询视图;
  • 视图消解:将视图定义中的子查询和用户另加的查询结合,转换为对基本表的查询,这转换过程为视图消解;

5)更新视图

  • 由于视图实际上不存在,因此更新视图实际要转化为对基本表进行更新;
  • 在RDBMS中,并非所有视图均可进行更新(有些视图更新无法唯一地转换为对应基本表的更新);
  • 操作语法和对基本表一样,此处略
欢迎打赏,谢谢
------ 本文结束------
0%