MySQL:join语句,与from多表区别

MySQL:join语句,与from多表区别


参考

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 加连接条件


分享到:


相關文章: