实验需要利用学生关系模式Student、Course和Score三个基本表及相关数据。 基于视图S_G查询“通信工程”系学生的平均成绩,要求输出sno,sname,avggrade。
时间: 2024-10-19 14:17:35 浏览: 35
数据库表的查询操作实践演练(实验三)
5星 · 资源好评率100%
在数据库设计中,如果我们要基于学生关系模式`Student` (sno, sname), `Course` (cno, cname) 和 `Score` (sno, cno, grade) 这三个表来查询特定信息,可以创建视图(View)来简化复杂的查询。对于这个需求,我们可以创建一个名为`S_G`的视图,其目的是获取"通信工程"系学生的平均成绩。
视图`S_G`的SQL查询语句可能会像这样:
```sql
CREATE VIEW S_G AS
SELECT Student.sno AS sno, Student.sname AS sname, AVG(Score.grade) AS avggrade
FROM Student
JOIN Score ON Student.sno = Score.sno
JOIN Course ON Score.cno = Course.cno
WHERE Course.cname = '通信工程'
GROUP BY Student.sno, Student.sname;
```
这个视图首先通过`sno`字段将`Student`, `Score` 和 `Course` 表关联起来,然后筛选出课程名称为"通信工程"的记录,最后计算每个学生的平均成绩并按`sno`和`sname`分组。
使用此视图,你可以直接运行如下查询来获取结果:
```sql
SELECT * FROM S_G;
```
阅读全文