
<b><big>“不要因为走得太远,而忘了为什么出发” </big> </b>
关键字:
JOIN
- 主要就是把两个或者多个表根据条件(表之间的字段关系)关联起来;
-
INNER JOIN
: 满足条件的行才会被返回(返回结果肯定小于或者等于行数最少的表); -
LEFT JOIN
: 会返回左边表所有的行数,就算是左右表关联字段值不匹配。如果右表中没有匹配,则结果为 NULL。 -
RIGHT JOIN
:会返回右边表所有的行数,就算是左右表关联字段值不匹配。如果左表中没有匹配,则结果为 NULL。
举例说明:
1、首先创建一个班级学生表(student_table),并插入几条数据。
name | student_ID | class_ID |
---|---|---|
詹姆斯 | 23 | 1 |
保罗 | 3 | 1 |
韦德 | 6 | 1 |
安东尼 | 7 | 1 |
2、再创建一个成绩表(score_table),也插入几条数据。
student_ID | math | history |
---|---|---|
23 | 90 | 90 |
3 | 90 | 90 |
24 | 91 | 87 |
35 | 92 | 86 |
30 | 93 | 85 |
3、INNER JOIN
代码部分:
SELECT * a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
student_table a
INNER JOIN score_table b ON a.student_ID = b.student_ID;
结果:
姓名 | 学号 | 数学 | 历史 |
---|---|---|---|
詹姆斯 | 23 | 90 | 90 |
保罗 | 3 | 90 | 90 |
4、LEFT JOIN(左表原来有四行结果,最终查询也为4行结果,没有匹配就是NULL)
SELECT a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
student_table a
LEFT JOIN score_table b ON a.student_ID = b.student_ID;
姓名 | 学号 | 数学 | 历史 |
---|---|---|---|
詹姆斯 | 23 | 90 | 90 |
保罗 | 3 | 90 | 90 |
韦德 | 6 | Null | Null |
安东尼 | 7 | Null | Null |
5、RIGHT JION (右表原来有5行结果,最终查询也为5行结果,没有匹配就是NULL)
SELECT a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
student_table a
RIGHT JOIN score_table b ON a.student_ID = b.student_ID;
姓名 | 学号 | 数学 | 历史 |
---|---|---|---|
詹姆斯 | 23 | 90 | 90 |
Null | Null | 91 | 87 |
保罗 | 3 | 90 | 90 |
Null | Null | 92 | 86 |
Null | Null | 92 | 86 |
网友评论