使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。
时间: 2023-06-15 13:03:51 浏览: 118
可以使用以下 SQL 语句:
```
SELECT c.course_id, c.course_name, COUNT(s.student_id) AS num_of_students
FROM course c
LEFT JOIN curriculum cu ON c.course_id = cu.course_id
LEFT JOIN student s ON cu.student_id = s.student_id
GROUP BY c.course_id, c.course_name;
```
解释:
- 使用左外连接 `LEFT JOIN`,以确保即使 `curriculum` 表中没有某个课程,也能够列出该课程的选修情况。
- `COUNT(s.student_id)` 统计选修某门课程的学生数量,使用 `GROUP BY` 按照课程编号和课程名称进行分组。
注意:如果存在重复记录,可以使用 `DISTINCT` 关键字进行去重。
相关问题
MySQL使用左外连接查询所有学生的姓名及选修的课程名称和分数,没有选课的学生姓名也要显示。在三个表里分别是student,grade,curriculum
可以使用左外连接将学生表和成绩表连接起来,再将课程表左外连接进来:
```
SELECT s.name, c.name, g.score
FROM student s
LEFT JOIN grade g ON s.id = g.student_id
LEFT JOIN curriculum c ON g.curriculum_id = c.id
```
这里使用了`LEFT JOIN`来保证即使某个学生没有选课或者某个课程没有学生选修,也能够显示出来。`LEFT JOIN`的左边是要显示出来的表,右边是要连接的表。在这个查询中,我们先将学生表和成绩表连接起来,然后再将课程表连接进来。最后查询结果中会包含所有的学生姓名、选修的课程名称和分数,没有选课的学生也会显示出来,只是课程名称和分数会显示为`NULL`。
2. 使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx
可以使用以下的SQL语句为curriculum表的课程编号创建唯一性索引:
```
CREATE UNIQUE INDEX cno_idx ON curriculum (cno);
```
其中,CREATE UNIQUE INDEX表示创建唯一性索引,cno_idx是索引的名称,curriculum是表名,cno是要创建索引的列名。