视图
一、创建视图
create view 视图名 [(列名,列名)]as 视图块
create view STudent as
select Sno,Sname,Sage,Sdept
from Student where Sdept='IS'
with check option(可以保证当对视图进行修改时,DBMS会自动添加Sdept='IS')
二、例题
1.定义视图
(1)定义计算机系学生基本情况视图V_Computer。
create view V_Computer
as
select * from Student where Sdepe='CS'
(2)将学生的学号、姓名、课程号、课程名和成绩定义为视图V_S_C_G。
create view V_S_C_G
as
select Student.Sno,Sname,Course.Cno,Cname,Grade
from Student,Course,SC
where Student.Sno=Sc.Sno and Course.Cno=SC.Cno
(3)将各系学生人数、平均年龄定义为视图V_NUM_AVG。
create view V_NUM_AVG
as
select Sdepe,Count(*)as '人数',avg(Sage)as'平均年龄'
from Student
group by Sdepe
(4)定义一个反映学生出生年份的视图V_YEAR,包括学号、姓名和出生年份。
create view V_YEAR
as
select Sno,Sname,2022-Sage as '出生年份'
from Student
(5)将每个学生选修课程的门数及平均成绩定义为视图V_AVG_S_G,包括学号、课程数量和平均成绩。
create view V_AVG_S_G
as
select Sno,Count(Sno)as'选修课程数',avg(Grade)as'平均成绩'
from SC
group by Sno
(6)将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G,包括课程号、选修人数和平均成绩。
create view V_AVG_C_G
as
select Cno,Count(*)as'选修人数',avg(Grade)as'平均成绩'
from SC
group by Cno
2.使用视图
(1)查询以上所建的视图结果。
select * from V_Computer;
select * from V_S_C_G;
select * from V_NUM_AVG;
select * from V_YEAR;
select * from V_AVG_S_G;
select * from V_AVG_C_G;
(2)查询平均成绩为90分以上的学生学号、姓名和平均成绩。
select V_AVG_S_G.Sno,Sname,平均成绩
from V_AVG_S_G ,Student
where V_AVG_S_G.Sno= Student.Sno and 平均成绩>90
11111111111111111111111111

浙公网安备 33010602011771号