MySQL三表联合查询实战(mysql三表连接)
MySQL三表联合查询是MySQL绝对不能回避的一种查询,本文将介绍如何使用MySQL的三表联合查询实现一些复杂的查询需求。
## 1. 常见的三表联合查询
常见的三表联合查询是以三个表为基础的多表连接查询,一般情况下第一张表作为主表,后面两张表至少拥有一个关联关系,其联合查询的结果是所有表中相应列取得结果的笛卡尔积。
假设有两张表student 和teacher,并且有如下数据:
* student表:
| StudentId | StudentName | TeacherId |
| :——: | :——: | :——: |
| s1 | Peter | t1 |
| s2 | Jack | t1 |
| s3 | Amy | t2 |
* teacher表:
| TeacherId | TeacherName |
| :——: | :——: |
| t1 | Tom |
| t2 | Mike |
若要查询出全体学生及其对应的老师信息,则可采用如下的三表联合查询语句:
“`sql
select student.StudentId,student.StudentName, teacher.TeacherId,teacher.TeacherName from student,teacher where student.TeacherId=teacher.TeacherId
执行以上语句得到的结果为:
| StudentId | StudentName | TeacherId | TeacherName || :------: | :------: | :------: | :------: |
| s1 | Peter | t1 | Tom || s2 | Jack | t1 | Tom |
| s3 | Amy | t2 | Mike |
## 2. 三表联合查询实战
该 esction 我们将使用三表联合查询来满足一个复杂的查询需求,使用以下三张表:
* student 表:存放学生信息
| StudentId | StudentName | Gender | Grade || :------: | :------: | :------: | :------: |
| s1 | Peter | male | 1 || s2 | Jack | male | 2 |
| s3 | Amy | female | 3 |
* subject 表:存放学生所学科目信息
| SubjectId | SubjectName | TeacherId || :------: | :------: | :------: |
| sub1 | Maths | t1 || sub2 | Science | t2 |
| sub3 | English | t3 |
* teacher 表:存放老师信息
| TeacherId | TeacherName || :------: | :------: |
| t1 | Tom || t2 | Mike |
| t3 | Lucy |
现在需要查询每个学生学习的所有课程及老师信息,则可以使用以下语句查询:
```sqlselect student.StudentId,student.StudentName,subject.SubjectName,teacher.TeacherName from student,subject,teacher
where student.StudentId=subject.StudentId and subject.TeacherId=teacher.TeacherId
执行该语句得到的查询结果为:
| StudentId | StudentName | SubjectName | TeacherName |
| :——: | :——: | :——: | :——: |
| s1 | Peter | Maths | Tom |
| s1 | Peter | Science | Mike |
| s1 | Peter | English | Lucy |
| s2 | Jack | Maths | Tom |
| s2 | Jack | Science | Mike |
| s2 | Jack | English | Lucy |
| s3 | Amy | Maths | Tom |
| s3 | Amy | Science | Mike |
| s3 | Amy | English | Lucy |
通过以上 query,我们可以看出每个学生学习的所有课程及老师信息。
## 3. 总结
本文使用了MySQL三表联合查询来满足一个复杂的查询需求,展示了 MySQL 三表联合查询的简单应用,从而帮助读者掌握并掌握MySQL 三表联合查询的实战知识点。