运用MySQL语句:查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course_name
时间: 2024-03-21 22:44:29 浏览: 298
可以使用以下MySQL语句来查询所有选修了课程但未参加考试的所有同学及相应的课程:
```
SELECT student.s_no, student.s_name, score.course_no, course.course_name
FROM student
INNER JOIN score ON student.s_no = score.s_no
INNER JOIN course ON score.course_no = course.course_no
WHERE score.score IS NULL;
```
这个查询语句使用了INNER JOIN连接了student、score和course三个表,其中student表包含学生的信息,score表包含学生选课和成绩的信息,course表包含课程的信息。查询条件是score表中的成绩为NULL,即未参加考试。最终查询结果包括学生的学号、姓名、选修的课程号和课程名称。
相关问题
运用MySQL:查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、
可以使用以下MySQL语句来查询所有选修了课程但考试不及格的所有同学及相应的课程:
```
SELECT student.s_no, student.s_name, score.course_no
FROM student
INNER JOIN score ON student.s_no = score.s_no
WHERE score.score < 60;
```
这个查询语句使用了INNER JOIN连接了student和score两个表,其中student表包含学生的信息,score表包含学生选课和成绩的信息。查询条件是score表中的成绩小于60分,即考试不及格。最终查询结果包括学生的学号、姓名和选修的课程号。如果需要显示课程名称,可以再INNER JOIN连接course表。
在MySQL5.7版本中,已知有student表(学生学号s_no,学生姓名s_name,学生性别s_sex,学生出生日期s_birthday,学生系别s_dept)其中s_no为主键,course表(课程号c_no,课程名称c_name,课程学分credit)其中c_no为主键,scores表(学生学号s_no,课程号c_no,课程得分score)其中s_no和c_no为复合主键,scores表有外键s_no参照student表主键s_no,同时scores表还有外键c_no,参照course表主键c_no。请使用命令查询出选修课程超过2门课,且成绩在70分以上的学生的姓名和选课门数;
查询语句如下:
```
SELECT s.s_name, COUNT(*) AS course_num
FROM student s JOIN scores sc ON s.s_no = sc.s_no
WHERE sc.score >= 70
GROUP BY s.s_no
HAVING COUNT(*) > 2;
```
解释:
1. 使用 JOIN 连接 student 和 scores 表,通过 s_no 连接两张表。
2. WHERE 子句过滤成绩大于等于70分的记录。
3. 使用 GROUP BY 分组,按照学生姓名进行分组。
4. 使用 HAVING 过滤选修课程大于2门的学生。
5. 使用 COUNT(*) 统计每个学生的选修课程门数。
阅读全文
相关推荐
















