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多表关联查询有进一步的理解和掌握,方便在实际开发中应用。


数据运维技术 » MySQL三表关联详解实现多表查询的方法(mysql三表依次关联)