1.定义视图
在stu数据库中完成以下视图定义:
(1)定义计算机系学生基本情况视图V_Computer。
(2)将学生的学号、姓名、课程号、课程名和成绩定义为视图V_S_C_G。
CREATE VIEW V_S_C_G
AS
SELECT student2021010986.Sno, Sname, course.Cno, Cname, Grade
FROM course INNER JOIN sc2021010986 ON course.Cno = sc2021010986.Cno INNER JOIN student2021010986 ON sc2021010986.Sno = student2021010986.Sno
(3)将各系学生人数、平均年龄定义为视图V_NUM_AVG。
(4)定义一个反映学生出生年份的视图V_YEAR,包括学号、姓名和出生年份。
(5)将每个学生选修课程的门数及平均成绩定义为视图V_AVG_S_G,包括学号、课程数量和平均成绩。
CREATE VIEW V_AVG_S_G
AS
SELECT Sno,count(Cno) AS countcno, avg(Grade) AS avggrage
FROM sc2021010986
GROUP BY Sno
(6)将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G,包括课程号、选修人数和平均成绩。
CREATE VIEW V_AVG_C_G(cno,countsc,avggrade)
AS
SELECT Cno,count(Sno),avg(Grade)
FROM sc2021010986
GROUP BY Cno
2.使用视图
(1)查询以上所建的视图结果。
(2)查询平均成绩为90分以上的学生学号、姓名和平均成绩。
SELECT student2021010986.Sno,Sname,avggrage
FROM v_avg_s_g,student2021010986
WHERE v_avg_s_g.Sno = student2021010986.Sno and avggrage >= 90
(3)查询各课成绩均大于平均成绩的学生学号、姓名、课程号和成绩。
SELECT student2021010986.Sno,Sname,sc2021010986.Cno,Grade
FROM student2021010986, sc2021010986
WHERE sc2021010986.Sno = student2021010986.Sno and sc2021010986.Sno not in
(SELECT Sno
FROM sc2021010986,v_avg_c_g
WHERE Grade<=avggrade and v_avg_c_g.cno =sc2021010986.Cno)
姓名:何传旭
学号:2021010986