########## 查询选修编号为'c01'或'c02'课程的学生姓名 ##########
时间: 2024-01-14 07:02:54 浏览: 111
假设有三个数据表,分别是"students"、"courses"和"selected_courses",其中"students"表包含学生信息,"courses"表包含课程信息,"selected_courses"表记录了学生选修课程的信息,包括学生编号、课程编号、选修状态等。
可以使用以下SQL语句查询选修编号为'c01'或'c02'课程的学生姓名:
```
SELECT s.name
FROM students s
INNER JOIN selected_courses sc ON s.id = sc.student_id
INNER JOIN courses c ON sc.course_id = c.id
WHERE c.course_code IN ('c01', 'c02');
```
这个SQL查询语句使用了 INNER JOIN 连接三个表,同时限制了课程编号为'c01'或'c02',最后只选出了学生姓名。
相关问题
查询选修编号为'c01'或'c02'课程的学生姓名
假设选修信息存储在名为 `course_selection` 的表中,学生信息存储在名为 `student` 的表中,选课信息存储在名为 `course` 的表中,可以使用如下 SQL 语句查询选修编号为'c01'或'c02'课程的学生姓名:
```
SELECT student.name
FROM student
INNER JOIN course_selection
ON student.student_id = course_selection.student_id
INNER JOIN course
ON course_selection.course_id = course.course_id
WHERE course.course_code = 'c01' OR course.course_code = 'c02';
```
其中,`INNER JOIN` 关键字是用来连接多个表的,`ON` 关键字是用来指定连接条件的。在这个例子中,使用 `INNER JOIN` 连接了三个表,然后使用 `WHERE` 子句指定了查询条件,即选修编号为'c01'或'c02'课程的学生姓名。
(3)在Reports表中查询至少选修课了程号为C01和C02的学生学号和姓名。 (4)查询既没有选修课程号C01,也没有选修课程号C02的学生的学号和姓名。 (5) 查询每个同学基本信息及其选修课程的情况。 (6)查询每个学生及其选修课程的情况(若某一个学生没有选课,只输出学生的基本情况信息,其选课信息为空值)。 (7)查询选修了课程名为“GIS开发”的学生学号和姓名。 (8) 查询没有选修C02课程的学生学号和姓名。
好的,我将依次回答你的问题:
(3) 查询选修了程号为C01和C02的学生学号和姓名:
```
SELECT s.sno, s.sname
FROM Student s
WHERE s.sno IN (
SELECT r.sno
FROM Reports r
WHERE r.cno = 'C01'
) AND s.sno IN (
SELECT r.sno
FROM Reports r
WHERE r.cno = 'C02'
);
```
(4) 查询既没有选修课程号C01,也没有选修课程号C02的学生的学号和姓名:
```
SELECT s.sno, s.sname
FROM Student s
WHERE s.sno NOT IN (
SELECT r.sno
FROM Reports r
WHERE r.cno = 'C01'
) AND s.sno NOT IN (
SELECT r.sno
FROM Reports r
WHERE r.cno = 'C02'
);
```
(5) 查询每个同学基本信息及其选修课程的情况:
```
SELECT s.sno, s.sname, s.ssex, s.sage, r.cno, c.cname, c.ccredit, r.grade
FROM Student s
LEFT JOIN Reports r ON s.sno = r.sno
LEFT JOIN Course c ON r.cno = c.cno;
```
(6) 查询每个学生及其选修课程的情况(若某一个学生没有选课,只输出学生的基本情况信息,其选课信息为空值):
```
SELECT s.sno, s.sname, s.ssex, s.sage, r.cno, c.cname, c.ccredit, r.grade
FROM Student s
LEFT JOIN Reports r ON s.sno = r.sno
LEFT JOIN Course c ON r.cno = c.cno;
```
(7) 查询选修了课程名为“GIS开发”的学生学号和姓名:
```
SELECT s.sno, s.sname
FROM Student s
INNER JOIN Reports r ON s.sno = r.sno
INNER JOIN Course c ON r.cno = c.cno
WHERE c.cname = 'GIS开发';
```
(8) 查询没有选修C02课程的学生学号和姓名:
```
SELECT s.sno, s.sname
FROM Student s
WHERE s.sno NOT IN (
SELECT r.sno
FROM Reports r
WHERE r.cno = 'C02'
);
```
阅读全文