假设“成绩管理数据库.accdb”,用sql语句完成下列查询。 (1) 查询没有选课的学生姓名和班级。 (2) 查询计算机专业学生的成绩单。 (3) 查找含先修课程且被学生选修过的课程编号,课程名称和学分。 (4) 查询获得成绩最高分的学生的学号、课程编号和相应成绩。 (5) 查询获得成绩最高分的学生的所有课程成绩。 (6) 查询获得的总学分大于或等于10的同学的学号、姓名。
时间: 2023-11-16 18:08:41 浏览: 216
(1) 查询没有选课的学生姓名和班级。
```sql
SELECT S.姓名, S.班级
FROM 学生 AS S LEFT JOIN 选课 AS X ON S.学号 = X.学号
WHERE X.学号 IS NULL;
```
(2) 查询计算机专业学生的成绩单。
```sql
SELECT S.姓名, K.课程名称, X.成绩
FROM 学生 AS S, 选课 AS X, 课程 AS K
WHERE S.学号 = X.学号 AND X.课程编号 = K.课程编号 AND S.专业 = '计算机';
```
(3) 查找含先修课程且被学生选修过的课程编号,课程名称和学分。
```sql
SELECT K.课程编号, K.课程名称, K.学分
FROM 先修课程 AS P, 课程 AS K, 选课 AS X
WHERE P.课程编号 = X.课程编号 AND K.课程编号 = X.课程编号;
```
(4) 查询获得成绩最高分的学生的学号、课程编号和相应成绩。
```sql
SELECT X.学号, X.课程编号, X.成绩
FROM 选课 AS X
WHERE X.成绩 = (SELECT MAX(Y.成绩) FROM 选课 AS Y WHERE Y.课程编号 = X.课程编号);
```
(5) 查询获得成绩最高分的学生的所有课程成绩。
```sql
SELECT X.学号, K.课程名称, X.成绩
FROM 选课 AS X, 课程 AS K
WHERE X.课程编号 = K.课程编号 AND X.学号 IN (
SELECT X.学号
FROM 选课 AS X
WHERE X.成绩 = (SELECT MAX(Y.成绩) FROM 选课 AS Y WHERE Y.课程编号 = X.课程编号)
);
```
(6) 查询获得的总学分大于或等于10的同学的学号、姓名。
```sql
SELECT S.学号, S.姓名
FROM 学生 AS S, 选课 AS X, 课程 AS K
WHERE S.学号 = X.学号 AND X.课程编号 = K.课程编号
GROUP BY S.学号, S.姓名
HAVING SUM(K.学分) >= 10;
```
阅读全文