将student表重命名为你名字的全拼(例如:zhangsan) 查询hu老师教什么课 查询挂过科的同学的学号和姓名 查询各科成绩的最高分、最低分 (查询科目名,最高分,最低分) 查询平均成绩大于80的所有学生的学号(查询student_id、姓名、平均分) 查询所有学生的学号,姓名,选课数和总成绩 查询学过“4”且学过编号“5”课程的同学的学号 查询没有上过‘wo’的课的学生姓名
时间: 2023-07-16 19:14:58 浏览: 115
对于这些问题,我们需要使用 SQL 语句来查询数据库。以下是我给出的 SQL 语句:
1. 将student表重命名为你名字的全拼(例如:zhangsan):
```
ALTER TABLE student RENAME TO <your_full_name>;
```
其中 `<your_full_name>` 为你的全拼名字,例如如果你的名字是张三,则可以将表名改为 `zhangsan`。
2. 查询hu老师教什么课:
```
SELECT course_name FROM course INNER JOIN teacher ON course.teacher_id = teacher.teacher_id WHERE teacher.teacher_name = 'hu';
```
其中 `course` 表包含课程信息,`teacher` 表包含教师信息。通过 INNER JOIN 将这两张表连接起来,然后筛选出教师名字为 'hu' 的课程名。
3. 查询挂过科的同学的学号和姓名:
```
SELECT student_id, student_name FROM student WHERE student_id IN (SELECT student_id FROM score WHERE score < 60);
```
其中 `score` 表包含学生成绩信息。首先查询出成绩低于 60 分的学生 ID,然后在 `student` 表中筛选出这些学生的学号和姓名。
4. 查询各科成绩的最高分、最低分:
```
SELECT course_name, MAX(score) as max_score, MIN(score) as min_score FROM score INNER JOIN course ON score.course_id = course.course_id GROUP BY course_name;
```
首先使用 INNER JOIN 连接 `score` 表和 `course` 表,然后按照科目名字分组,计算出每个科目的最高分和最低分。
5. 查询平均成绩大于80的所有学生的学号:
```
SELECT student_id, student_name, AVG(score) as avg_score FROM score INNER JOIN student ON score.student_id = student.student_id GROUP BY student_id HAVING avg_score > 80;
```
使用 INNER JOIN 连接 `score` 表和 `student` 表,然后按照学生 ID 分组,计算出每个学生的平均分,并筛选出平均分大于 80 的学生的学号、姓名和平均分。
6. 查询所有学生的学号,姓名,选课数和总成绩:
```
SELECT student.student_id, student.student_name, COUNT(score.course_id) as num_courses, SUM(score.score) as total_score FROM student LEFT JOIN score ON student.student_id = score.student_id GROUP BY student.student_id;
```
使用 LEFT JOIN 连接 `student` 表和 `score` 表,按照学生 ID 分组,计算出每个学生选修的课程数和总成绩。
7. 查询学过“4”且学过编号“5”课程的同学的学号:
```
SELECT student_id FROM score WHERE course_id IN (4, 5) GROUP BY student_id HAVING COUNT(DISTINCT course_id) = 2;
```
首先筛选出选修了课程编号为 4 或 5 的学生成绩记录,然后按照学生 ID 分组,筛选出选修了这两门课程的学生的学号。
8. 查询没有上过‘wo’的课的学生姓名:
```
SELECT student_name FROM student WHERE student_id NOT IN (SELECT student_id FROM score WHERE course_id = (SELECT course_id FROM course WHERE course_name = 'wo'));
```
首先查询出课程名为 'wo' 的课程 ID,然后在 `score` 表中筛选出选修了这门课程的学生 ID,最后在 `student` 表中筛选出没有选修这门课程的学生的姓名。
阅读全文