数据库实训,求选修了'刘东明' 同学选修的全部课程的学生的学号。使用子查询
时间: 2023-11-10 12:12:03 浏览: 365
查询数据库中所有有成绩的学生的学号和课程号
4星 · 用户满意度95%
假设数据库中有以下几张表:
学生表(Student):
| 学号 | 姓名 | 年龄 | 性别 |
|------|------|------|------|
| 001 | 张三 | 18 | 男 |
| 002 | 李四 | 19 | 女 |
| 003 | 王五 | 20 | 男 |
| 004 | 赵六 | 21 | 女 |
选课表(Course):
| 学号 | 课程号 |
|------|--------|
| 001 | 001 |
| 001 | 002 |
| 002 | 001 |
| 003 | 002 |
| 004 | 003 |
课程表(Class):
| 课程号 | 课程名 |
|--------|--------|
| 001 | 数学 |
| 002 | 英语 |
| 003 | 物理 |
老师表(Teacher):
| 教师号 | 姓名 |
|--------|------|
| 001 | 张老师|
| 002 | 李老师|
| 003 | 王老师|
如果刘东明同学选修了全部课程,可以使用以下 SQL 语句查询他的学号:
```
SELECT 学号
FROM 选课表
WHERE 课程号 IN (
SELECT 课程号
FROM 课程表
WHERE 课程名 NOT IN (
SELECT 课程名
FROM 课程表
EXCEPT
SELECT 课程名
FROM 选课表
JOIN 学生表 ON 选课表.学号 = 学生表.学号
WHERE 姓名 = '刘东明'
)
)
```
该查询语句的子查询部分查询了刘东明同学选修的全部课程的课程号,再用这些课程号去查询选课表中选了这些课程的学生号。
阅读全文