数据库学习笔记和小练习(5)视图

来源:互联网 发布:微软雅黑blod mac 编辑:程序博客网 时间:2024/06/13 22:40

视图是从一个或几个基本表(或视图)导出的虚表。所谓虚表是指数据库中值存放视图的定义,不存放视图对应的数据,数据仍然存放在原来的基本表中。

1.定义视图

create view....

as...

[ with check option]

(这一句的意思是对视图进行update  insert  delete操作的时候要保证相应的行为满足试图定义中的谓词条件。

(更新一个视图将更新其基表,而且不是所有的视图都是可更新的:很多都不可以)

比如包含有:分组,联结,子查询,并,聚集函数,distinct,导出(计算)列的时候都不可以。

(但是,一般应该将试图用于检索,而非更新)

create view IS_Studentasselect Sno,Sname,Sagefrom Studentwhere Sdept='IS'with check option;
这里省略了视图的列名,隐含的由子查询select语句的三个列名组成

create view Is_S1(Sno,Sname,Grade)asselect Student.Sno,Sname,Gradefrom Student,scwhereSdept='IS' andstudent.Sno=SC.Sno andSC.Cno='1';
建立了信息系选修1号课程的学生的视图,信息包含了两个表,所以要连接,除此之外,where需要表名信息系和1号课,所以三个条件是清晰地,因为sno是两个表的同名列,所以视图定义需要指出名字。

create view S_G(Sno,Sbirth)asselect Sno,avg(Grade)from scgroup by Sno;

这是使用了分组和聚集函数的分组视图。


2.删除视图

drop view S_G;

注意:如果要删除的视图上导出了视图,那么需要加上cascade才能删除成功。


3.查询视图

像对基本表一样查询即可。

select ... from 视图名;

举例:

select IS_Student.Sno,Snamefrom Is_Student,scwhere IS_Student.Sno=sc.Sno and SC.Cno='1';

4.更新视图

由于视图是不实际存储数据的虚表,因此对视图的更新最重要转换为对基本表的更新

注意:对视图的更新转化为对基本表的增,删,改的时候,要注意基表上建立视图时候的where条件



5 修改视图


(1)alter view 视图名 as 新的select语句。

(2)先drop删掉视图,再create重建。


6.查看视图的创建

show create view viewname;

0 0
原创粉丝点击