查询选修编号为'c01'或'c02'课程的学生姓名
时间: 2023-12-24 11:04:32 浏览: 113
假设选修信息存储在名为 `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'课程的学生姓名。
相关问题
查询同时选修了c01和c02课程的学生姓名和成绩
查询同时选修了c01和c02课程的学生姓名和成绩通常涉及到数据库操作,假设我们有一个学生表(Students)和一门课程关联表(Courses选课),这两个表可能有如下的结构:
- Students 表:包含字段如 student_id (学生ID), name (姓名) 和 score (成绩)
- Courses选课 表:包含字段如 course_id (课程ID), student_id (学生ID)
在这种情况下,你可以通过SQL查询来获取所需信息:
```sql
SELECT S.name, S.score
FROM Students S
JOIN (
SELECT student_id
FROM Courses选课
WHERE course_id IN ('c01', 'c02')
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) = 2
) C ON S.student_id = C.student_id;
```
这个查询首先从"Courses选课"表中找出同时选择了c01和c02课程的学生ID列表,然后在"Students"表中找到这些学生的姓名和成绩。
(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'
);
```
阅读全文