SQL JOIN & MySQL 8.0 JOIN
-
1.环境信息:
MySQL:8.0.16
MySQL Workbench:8.0 -
2.数据库信息:
学生表:t_student
成绩表:t_score
关系图:两表通过t_student
的id
和t_score
的student_id
进行关联
t_student
表数据:
t_score
表数据:
1.标准SQL JOIN
各种Join图示:
1.1 JOIN类型
- 1.(INNER) JOIN: 返回两个表中具有匹配值的记录(两表交集)
- 2.CROSS JOIN: 返回两表笛卡尔积(第一个表中的每一行与第二个表中的每一行组合在一起的行)(两表交集)
- 3.LEFT (OUTER) JOIN: 返回左表中的所有记录,以及右表中的匹配记录(符合某条件的并集)
- 4.RIGHT (OUTER) JOIN: 返回右表中的所有记录,以及左表中匹配的记录(符合某条件的并集)
- 5.FULL (OUTER) JOIN: 当左表或右表中匹配时返回所有记录(两表并集)
左表右表
有点晕,可以理解为第一个表
(左表),第二个表
(右表),OUTER在左连接和右连接中经常省略:
select * from t_student(第一个表) a left (省略outer) join t_score(第二个表) b on a.id = b.student_id;
1.2 SQL JOIN 写法
-- inner连接 一取两表交集
select * from t_student a inner join t_score b on a.id = b.student_id;
-- cross连接 一取两表笛卡尔积
select * from t_student a cross join t_score b ;
-- 左连接 一第一张表为准进行关联,第二张表显示为NULL
select * from t_student a left join t_score b on a.id = b.student_id;
-- 左连接 一第二张表为准进行关联,第一张表显示为NULL
select * from t_