SQL 查询没有成绩的学号和课程号的代码
时间: 2024-03-12 21:47:25 浏览: 158
以下是查询没有成绩的学号和课程号的 SQL 代码:
```
SELECT 学号, 课程号
FROM 学生, 课程
WHERE NOT EXISTS (
SELECT *
FROM 成绩
WHERE 学生.学号 = 成绩.学号
AND 课程.课程号 = 成绩.课程号
);
```
这个查询使用了子查询来判断哪些学生和课程没有成绩。首先,我们使用 `NOT EXISTS` 来判断一个学生和课程是否不存在成绩。这个子查询会检查成绩表中是否有学生和课程号匹配的记录,如果没有,那么这个学生和课程就是没有成绩的。然后,我们使用 `SELECT` 语句来选择没有成绩的学号和课程号。注意,这个查询使用了学生表、课程表和成绩表,所以需要使用表别名来区分它们。
相关问题
写出以下查询语句的关系代数表达式以及Sql代码。 (1)查询成绩在70到80分之间的学生的学号、课程号和成绩; (2)查询0002号课程成绩最高的分数 (3)查询信科系学生的选课情况,查询结果需要显示出学号、姓名、所属专业、课程名称、成绩。
(1)关系代数表达式:
σ 70 ≤ 成绩 ≤ 80 (选修)
Sql代码:
SELECT 学号, 课程号, 成绩
FROM 成绩表
WHERE 成绩 BETWEEN 70 AND 80
(2)关系代数表达式:
π 成绩 (σ 课程号=0002 (成绩表))
Sql代码:
SELECT MAX(成绩)
FROM 成绩表
WHERE 课程号='0002'
(3)关系代数表达式:
π 学号, 姓名, 专业, 课程名称, 成绩 ((学生表 ⨝ 选课表 ⨝ 成绩表) ⨝ 课程表)
Sql代码:
SELECT 学生表.学号, 学生表.姓名, 学生表.专业, 课程表.课程名称, 成绩表.成绩
FROM 学生表
JOIN 选课表 ON 学生表.学号 = 选课表.学号
JOIN 成绩表 ON 选课表.学号 = 成绩表.学号 AND 选课表.课程号 = 成绩表.课程号
JOIN 课程表 ON 选课表.课程号 = 课程表.课程号
WHERE 学生表.专业 = '信科系'
设有如下所示的关系S(S# ,SNAME,AGE,SEX). C(C#,CNAME,TEACHER)和SC(S#, ,C#,GRADE), 用SQL语句表示以下查询。 (1)检索选修课程名称为"MATHS"的学生的学号 与姓名 (2)检索至少学习了课程号为"C1"和“C2"的学 生的学号 (3)检索年龄在18到20之间(含18和20)的女生的学 号、姓名和年龄 (4)检索平均成绩超过80分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名的代码
(1) SELECT S.S#, S.SNAME FROM S, SC, C WHERE S.S# = SC.S# AND SC.C# = C.C# AND C.CNAME = 'MATHS';
(2) SELECT S.S# FROM S, SC WHERE S.S# = SC.S# AND SC.C# IN ('C1', 'C2') GROUP BY S.S# HAVING COUNT(DISTINCT SC.C#) = 2;
(3) SELECT S.S#, S.SNAME, S.AGE FROM S WHERE S.AGE BETWEEN 18 AND 20 AND S.SEX = '女';
(4) SELECT SC.S#, AVG(SC.GRADE) AS AVERAGE_GRADE FROM SC GROUP BY SC.S# HAVING AVG(SC.GRADE) > 80;
(5) SELECT S.SNAME FROM S WHERE NOT EXISTS (SELECT C.C# FROM C WHERE NOT EXISTS (SELECT SC.C# FROM SC WHERE SC.S# = S.S# AND SC.C# = C.C#));
阅读全文