数据库School设计及SQL查询示例:学生、课程、选修关系
数据库School设计及SQL查询示例:学生、课程、选修关系
本文介绍了数据库School的设计,包含学生、课程、选修三个表,并使用SQL语句实现了一系列查询操作,例如查询各系学生的选课平均成绩、查询每门课的平均成绩、查询平均成绩在75以上的学生姓名等。
数据库结构:
- 学生表 Student
- 学号 (Sno) char(3)
- 姓名 (Sname) char(4)
- 性别 (Ssex) char(2)
- 年龄 (Sage) int
- 系别 (Sdept) char(6)
- 课程表 Course
- 课程号 (Cno) char(3)
- 课程名 (Cname) char(8)
- 任课教师 (teacher) char(4)
- 选修表 SC
- 学号 (Sno) char(3)
- 课程号 (Cno) char(3)
- 成绩 (Grade) int
查询示例:
- 查询各系学生的选课平均成绩及其系名:
SELECT Sdept AS '系名', AVG(Grade) AS '平均成绩'
FROM Student, SC
WHERE Student.Sno = SC.Sno
GROUP BY Sdept;
- 查询每门课的平均成绩及其课程名:
SELECT Cname AS '课程名', AVG(Grade) AS '平均成绩'
FROM Course, SC
WHERE Course.Cno = SC.Cno
GROUP BY Cname;
- 查询平均成绩在75以上的学生姓名:
SELECT Sname AS '姓名'
FROM Student, SC
WHERE Student.Sno = SC.Sno AND Grade >= 75
GROUP BY Sname;
- 查询选修了2门以上课程的学生姓名:
SELECT Sname AS '姓名'
FROM Student, SC
WHERE Student.Sno = SC.Sno
GROUP BY Sname
HAVING COUNT(Cno) >= 2;
- 查询至少选修了张三所选修的一门课程的学生姓名及其课程名:
SELECT Sname AS '姓名', Cname AS '课程名'
FROM Student, Course, SC
WHERE Student.Sno = SC.Sno AND Course.Cno = SC.Cno AND EXISTS (
SELECT *
FROM SC, Student
WHERE SC.Sno = Student.Sno AND Student.Sname = '张三' AND SC.Cno = '001'
);
原文地址: https://www.cveoy.top/t/topic/od1q 著作权归作者所有。请勿转载和采集!