8、用SQL语句完成下列查询: 1)基于基本表,查询选修了“数据结构”,但是没有选修“数据库原理”课程的学生的学号。 2)基于基本表,查询选修人数多于30人的课程编号和课程名称。 3)基于基本表,查询“数据库原理”这门课程的直接先修课的名称。 4)基于视图scs_view_8208210915,查询所有课程的课程编号、课程名称和平均成绩。
时间: 2024-03-16 19:45:19 浏览: 54
查询数据库中所有有成绩的学生的学号和课程号
4星 · 用户满意度95%
1)查询选修了“数据结构”,但是没有选修“数据库原理”课程的学生的学号的SQL语句如下:
```
SELECT DISTINCT r.sid
FROM Score_8208210915 r
WHERE r.cid = '01' AND r.sid NOT IN (
SELECT r1.sid
FROM Score_8208210915 r1
WHERE r1.cid = '02'
);
```
2)查询选修人数多于30人的课程编号和课程名称的SQL语句如下:
```
SELECT c.cid, c.cname
FROM Courses_8208210915 c
WHERE c.cid IN (
SELECT r.cid
FROM Score_8208210915 r
GROUP BY r.cid
HAVING COUNT(DISTINCT r.sid) > 30
);
```
3)查询“数据库原理”这门课程的直接先修课的名称的SQL语句如下:
```
SELECT c1.cname
FROM Courses_8208210915 c1, Courses_8208210915 c2, Prerequisite_8208210915 p
WHERE c1.cid = p.cid AND c2.cid = p.prerequisite AND c2.cname = '数据库原理';
```
4)查询所有课程的课程编号、课程名称和平均成绩的SQL语句如下:
```
SELECT r.cid, c.cname, AVG(r.score) AS average_score
FROM Courses_8208210915 c, Score_8208210915 r
WHERE c.cid = r.cid
GROUP BY r.cid, c.cname;
```
以上SQL语句可以在关系数据库管理系统中执行。
阅读全文