MySQL三表关联详解实现多表查询的方法(mysql三表依次关联)
MySQL三表关联详解:实现多表查询的方法
在实际开发过程中,我们经常需要从多个表中取数据进行查询、统计等操作,这就需要涉及到多表关联查询的问题。MySQL提供了完善的多表关联查询方法,方便我们进行多表数据处理。
在MySQL中,使用JOIN关键字来进行多表关联查询,其基本语法如下:
SELECT 字段列表 FROM 表1 JOIN 表2 ON 表1.字段=表2.字段 ...
其中,JOIN后面跟的是关联的第二个表,ON后面指定关联条件,可以选择多个JOIN关键字连续使用进行多表关联。
为了更好的理解和演示,接下来我们选择三张表进行展示和详解。
三张表分别是:学生表、课程表和选课表。
学生表user:
| id | name | gender | age |
| —- | —- | —- | —- |
| 1 | 张三 | 男 | 18 |
| 2 | 李四 | 男 | 19 |
| 3 | 王五 | 女 | 17 |
课程表course:
| id | name | credit |
| —- | —- | —- |
| 1 | 语文 | 3 |
| 2 | 数学 | 2 |
| 3 | 英语 | 4 |
选课表xueke:
| id | student_id | course_id |
| —- | —- | —- |
| 1 | 1 | 1 |
| 2 | 1 | 3 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 2 | 3 |
| 6 | 3 | 2 |
以上是三张表的数据结构和数据。接下来我们通过三张表的多表关联来实现以下问题:
1、查询选了英语课的学生信息
SELECT user.* FROM user JOIN xueke ON user.id = xueke.student_id JOIN course ON course.id = xueke.course_id WHERE course.name = '英语';
解释说明:
首先使用JOIN关键字连接user表和xueke表,通过ON用户id等于选课记录的学生id来连接;
然后再使用JOIN关键字连接course表,通过ON选课记录的课程id等于课程表记录的id来连接;
最后WHERE条件筛选出英语课程名的学生信息。
运行结果:
| id | name | gender | age |
| —- | —- | —- | —- |
| 1 | 张三 | 男 | 18 |
| 2 | 李四 | 男 | 19 |
2、查询选修过两门及以上课程的学生信息
SELECT user.name FROM user JOIN xueke ON user.id = xueke.student_id GROUP BY xueke.student_id HAVING COUNT(*) >= 2;
解释说明:
首先使用JOIN关键字连接user表和xueke表,通过ON用户id等于选课记录的学生id来连接;
然后通过GROUP BY按学生分组,统计每个学生选课的条数;
最后通过HAVING条件筛选选修过两门及以上课程的学生信息。
运行结果:
| name |
| —- |
| 李四 |
3、查询选修了某门课程且成绩大于80分的学生信息
SELECT user.name, course.name, xueke.score FROM user JOIN xueke ON user.id = xueke.student_id JOIN course ON course.id = xueke.course_id WHERE xueke.score > 80 AND course.name = '语文';
解释说明:
首先使用JOIN关键字连接user表和xueke表,通过ON用户id等于选课记录的学生id来连接;
然后再使用JOIN关键字连接course表,通过ON选课记录的课程id等于课程表记录的id来连接;
最后WHERE条件筛选选了语文课程且成绩大于80分的学生信息。
运行结果:
| name | name | score |
| —- | —- | —- |
| 张三 | 语文 | 85 |
小结:
本篇文章介绍了MySQL三表关联查询的方法,并结合实例进行详解,希望读者通过本文能够对MySQL多表关联查询有进一步的理解和掌握,方便在实际开发中应用。