使用jxgl数据库,查询既选修了“操作系统”又选修了“数据结构”的学生的学号和姓名。
时间: 2023-09-16 21:13:37 浏览: 78
假设jxgl数据库中有以下表格:
- 学生表格:student,包含学生ID(sid)和学生姓名(sname)两个字段。
- 课程表格:course,包含课程ID(cid)和课程名称(cname)两个字段。
- 选课表格:sc,包含学生ID(sid)和课程ID(cid)两个字段,表示哪个学生选修了哪门课程。
则查询既选修了“操作系统”又选修了“数据结构”的学生的学号和姓名的SQL语句如下:
```
SELECT student.sid, student.sname
FROM student
INNER JOIN sc ON student.sid = sc.sid
INNER JOIN course ON sc.cid = course.cid
WHERE course.cname = '操作系统' AND student.sid IN (
SELECT sid
FROM sc
INNER JOIN course ON sc.cid = course.cid
WHERE course.cname = '数据结构'
)
```
解释一下上述SQL语句的含义:
- 首先使用INNER JOIN将学生表格(student)和选课表格(sc)关联起来,以获取每个学生的选课信息。
- 然后再使用INNER JOIN将选课表格(sc)和课程表格(course)关联起来,以获取每个选课信息所对应的课程名称。
- 接着使用WHERE子句,筛选出选修了“操作系统”且学号在选修了“数据结构”的学生ID列表中的学生。
- 最后使用SELECT子句,选取学生表格中的学生ID(sid)和学生姓名(sname)两个字段。
这样查询出来的结果即为既选修了“操作系统”又选修了“数据结构”的学生的学号和姓名。