视图

视图

一、创建视图

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
 
 
posted @ 2022-05-04 09:36  山上的树  阅读(170)  评论(0)    收藏  举报