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