视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,它是一个虚表。因为数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然放在原来的基本表中。视图就像电视,只是提供了一个我们看电视的窗口,而具体播放什么内容并不由电视本身决定,我们可以通过电视查看自己想看的电视台,所以视图可以帮助我们看到数据库中自己感兴趣的数据和它们的变化。
1.视图定义
create view <视图名> [(<列名>,[<列名>]…)]
as <子查询>
[with check option];
注:(1)列名可以没有,如果没有,列名将使用子查询查询结果的列名
(2)with check option 表示 对创建的视图之后的更新操作都要满足子查询的条件表达式,
默认没有,则不用遵循。
例1 创建女生信息的视图
create view girl_student
as
select sno,sname,sex,sage
from student
where sex=‘女’;
例2 创建女生信息视图要求更操作时仍保证该视图只有女生信息
create view girl_student
as
select sno,sname,sex,sage
from student
where sex=‘女’
with check option ;
这种由一个表导出的视图叫单表视图,如果单表视图还保留了基本表的主码且只有基本表的属性列或者其子集存在,则称这类视图为行列子集视图。有单表视图自然还有由多个表导出的多表视图
例3创建选修了java课程的学生的视图(包括学号,姓名,课程名,成绩)
create view stu_Sc_java(sno,sname,cname,grade)
as
select student sno,student.sname,course.cname,SC.grade
from student,SC,course
where student.sno=SC.sno and SC.cno=cpu