一.实验目的
二.实验准备
三.实验要求
四.实验内容
五、实验步骤
--定义视图 V_SC_G:该视图包含 Student、 Course 和 SC 表中学生的学号、姓名、课程号、课程名和成绩 create view V_SC_G(Sno,Sname,Cno,Cname,Score) as select student.sno,Sname,course.Cno,Cname,Score from student,course,sc where student.Sno=sc.Sno and course.Cno=sc.Cno; --定义一个反映学生出生年份的视图 V_YEAR,该视图要求使用系统函数来获取当前日期及转换 create view V_YEAR(Sno,Sname,Sbirth) as select Sno,Sname,year(GETDATE())-Sage from student; --定义视图 V_AVG_S_G:该视图将反映学生选修课程的门数及平均成绩 create view V_AVG_S_G(Sno,classcount,avescore) as select Sno,count(*),AVG(Score) from sc group by Sno; --定义视图 V_AVG_C_G:该视图将统计各门课程的选修人数及平均成绩 create view V_AVG_C_G(Cno,studentcount,avescore) as select sc.Sno,count(sc.Sno),AVG(score) from sc,student,course where sc.Sno=student.Sno and sc.Cno=course.Cno group by sc.Cno;
--查询平均成绩为 90 分及以上的学生学号、姓名和成绩 select V_SC_G.Sno,Sname,Score from V_SC_G,V_AVG_S_G where avescore>90 and V_SC_G.Sno=V_AVG_S_G.Sno; --查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩 select distinct V_SC_G.Sno,V_AVG_C_G.Cno,sc.Score,avescore from V_SC_G,V_AVG_C_G,sc where V_SC_G.Sno=sc.Sno and V_AVG_C_G.Cno=sc.Cno and sc.Score>V_AVG_C_G.avescore; --查询 1995 年出生的学生学号和姓名 select V_YEAR.Sno,Sname from V_YEAR,student where V_YEAR.Sbirth=1995 and V_YEAR.Sno=student.Sno;