mysq l多表查询练习
时间: 2023-07-20 08:12:48 浏览: 73
好的,以下是一个 MySQL 多表查询的练习:
假设有两个表:学生表(student)和课程表(course),它们之间有一个关联表(score)记录学生所选的课程及分数。
学生表结构:
| 字段名 | 类型 |
| -------- | ------------|
| id | int |
| name | varchar(20) |
| age | int |
| gender | varchar(2) |
课程表结构:
| 字段名 | 类型 |
| -------- | ------------|
| id | int |
| name | varchar(20) |
| teacher | varchar(20) |
| credit | int |
关联表结构:
| 字段名 | 类型 |
| ---------- | ------------|
| id | int |
| student_id | int |
| course_id | int |
| score | int |
现在我们要查询每个学生所选的课程及其成绩,并计算每个学生的平均分和总分。
可以使用如下 SQL 语句实现:
```
SELECT student.name, course.name, score.score
FROM student
JOIN score ON student.id = score.student_id
JOIN course ON score.course_id = course.id;
```
这个查询语句会返回每个学生所选的课程及其成绩。如果要计算每个学生的平均分和总分,可以使用以下 SQL 语句:
```
SELECT student.name, AVG(score.score) AS avg_score, SUM(score.score) AS total_score
FROM student
JOIN score ON student.id = score.student_id
JOIN course ON score.course_id = course.id
GROUP BY student.id;
```
这个查询语句会返回每个学生的姓名、平均分和总分。其中,AVG 函数用于计算平均分,SUM 函数用于计算总分,GROUP BY 语句用于按学生分组。