(3) 查询刘东明同学不学的课程的课程号和课程名。
时间: 2024-10-24 13:10:23 浏览: 19
在数据库查询中,如果你想要查找刘东明同学不学习的课程的课程号和课程名,通常需要有学生选课表和课程信息表。假设有一个"courses"表记录了所有课程的信息(课程号course_id和课程名course_name),以及一个"students_courses"表记录了每个学生的选课情况(包括学生ID student_id和课程ID course_id)。
你可以编写一个SQL查询,例如:
```sql
SELECT c.course_id, c.course_name
FROM courses c
LEFT JOIN students_courses sc ON c.course_id = sc.course_id
WHERE sc.student_id NOT IN (
SELECT student_id FROM students_courses WHERE student_id = '刘东明'
)
```
这个查询首先通过LEFT JOIN将所有课程连接到学生课程表上,然后筛选出刘东明同学未选择的课程(不在内层子查询的结果集中)。结果就是刘东明同学不学的课程的课程号和课程名。
请注意,这里的'刘东明'应替换为你实际数据库中存储的学生姓名,而且假设表名和字段名与实际情况相符。
相关问题
使用MySQL相关子查询(not exists+表子查询)求选修了'刘东明' 同学选修的全部课程的学生的学号。
这是一道 SQL 查询题,可以用以下语句来解决:
SELECT DISTINCT stu_id
FROM stu_course
WHERE course_id IN (
SELECT course_id
FROM course
WHERE teacher_name = '刘东明'
)
AND NOT EXISTS (
SELECT *
FROM stu_course sc
WHERE sc.stu_id = stu_course.stu_id
AND sc.course_id NOT IN (
SELECT course_id
FROM course
WHERE teacher_name = '刘东明'
)
);
上述语句中,第一个子查询用来找到刘东明老师教授的所有课程;第二个子查询用来找到所有选修了该同学这些课程的学生,这里使用 not exists 子查询来判断学生是否选修了刘东明老师的所有课程。最终的结果是所有选修了刘东明老师全部课程的学生的学号。
数据库实训,求选修了'刘东明' 同学选修的全部课程的学生的学号。使用子查询
假设数据库中有以下几张表:
学生表(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 姓名 = '刘东明'
)
)
```
该查询语句的子查询部分查询了刘东明同学选修的全部课程的课程号,再用这些课程号去查询选课表中选了这些课程的学生号。
阅读全文