参考
https://dev.mysql.com/doc/refman/5.7/en/join.html
MySQL版本
5.7
join类型
- [INNER | CROSS] JOIN
- STRAIGHT_JOIN
- {LEFT|RIGHT} [OUTER] JOIN
- NATURAL [{LEFT|RIGHT} [OUTER]] JOIN
备注:
[]:可选的
{}:必须的
[INNER | CROSS] JOIN
内连接,交叉连接,全连接;可以有连接条件,可以是on,using;如果没有连接条件的话就是笛卡尔积(即:n*m列)
注:on和using的区别
on用在表列名不同,using用在表列名相同
STRAIGHT_JOIN
直接连接(啥意思呢?还是笛卡尔积);可以有连接条件,并且只能是on;效果和[INNER | CROSS] JOIN一样
{LEFT|RIGHT} [OUTER] JOIN
左(外)连接、右(外)连接;必须要连接条件,可以是on,using;左连接:查询出左表的全部记录并按连接条件查询连接右表的记录,不存在连接null;右连接:查询出右表的所有记录并按连接条件查询连接左表的记录,不存在连接null
NATURAL [{LEFT|RIGHT} [OUTER]] JOIN
等同于{LEFT|RIGHT} [OUTER] JOIN using(所有相同列)
from多表 VS join
from多表没有where语句的话 等同于 [INNER | CROSS] JOIN没有连接条件;
from多表有where语句的话 等同于 [INNER | CROSS] JOIN 加连接条件