MySQL三张表关联查询练习
在MySQL数据库中,关联查询是非常常见且重要的操作。通过关联查询,我们可以从多张表中获取到我们想要的数据,从而实现更加复杂和灵活的查询功能。本文将通过一个示例,介绍如何在MySQL中进行三张表的关联查询,并给出相应的代码示例。
示例背景
假设我们有三张表:学生表,课程表和成绩表。学生表包含学生的基本信息,课程表包含开设的课程信息,成绩表记录了学生的课程成绩。三张表的结构如下:
学生表(students)
| 列名 | 数据类型 | 说明 |
|---|---|---|
| id | INT | 学生ID |
| name | VARCHAR | 学生姓名 |
| gender | VARCHAR | 学生性别 |
| birthday | DATE | 出生日期 |
课程表(courses)
| 列名 | 数据类型 | 说明 |
|---|---|---|
| id | INT | 课程ID |
| name | VARCHAR | 课程名称 |
| teacher | VARCHAR | 授课教师 |
| semester | VARCHAR | 学期 |
成绩表(scores)
| 列名 | 数据类型 | 说明 |
|---|---|---|
| id | INT | 成绩ID |
| student_id | INT | 学生ID |
| course_id | INT | 课程ID |
| score | DECIMAL | 课程成绩 |
我们的目标是通过关联这三张表,查询出学生的姓名、课程名称和对应的成绩。
示例代码
下面是一个基于上述示例的MySQL关联查询示例代码:
-- 查询学生的姓名、课程名称和对应的成绩
SELECT s.name AS '学生姓名', c.name AS '课程名称', sc.score AS '成绩'
FROM students s
JOIN scores sc ON s.id = sc.student_id
JOIN courses c ON sc.course_id = c.id;
在上述代码中,使用了JOIN关键字来进行表的关联。JOIN关键字用于将多个表中的数据进行匹配,从而得到我们想要的结果。
在这个例子中,我们使用了两个JOIN语句,将学生表、成绩表和课程表关联在一起。首先,我们将学生表和成绩表通过学生ID进行关联,然后再将成绩表和课程表通过课程ID进行关联。最后,我们通过SELECT语句选择需要的列,并给它们起别名。
示例结果
运行上述代码后,我们可以得到如下的查询结果:
| 学生姓名 | 课程名称 | 成绩 |
|---|---|---|
| 张三 | 数学 | 90 |
| 张三 | 英语 | 85 |
| 李四 | 数学 | 95 |
| 李四 | 物理 | 80 |
| 王五 | 英语 | 92 |
| 王五 | 物理 | 88 |
上述结果表明了每个学生的姓名、所选课程的名称以及对应的成绩。
相关知识点解析
1. 关联查询的类型
在MySQL中,有几种不同的关联查询类型,包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。这些不同的连接类型可以根据实际需求选择使用。
- 内连接(INNER JOIN):返回两个表中满足连接条件的行。只有在两个表中都存在匹配的行时,才会包含在结果中。
- 左连接(LEFT JOIN):返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,那么结果中对应的列将显示为NULL。
- 右连接(RIGHT JOIN):返回右表中的所有行,以及左表中
















