交叉连接也叫笛卡尔积连接. 表现: 行数相乘, 列数相加.
隐式交叉连接: SELECT * FROM A, B
显式交叉连接: SELECT * FROM A CROSS JOIN B
内连接
隐式内连接: 返回的是两个表的交集, 如果其中一个表没有满足条件的, 或者表数据为空, 则返回的结果集也是空, 因为这两个表不存在任何交集.
SELECT * FROM A,B WHERE A.id = B.id.
显式内连接: SELECT * FROM A INNER JOIN B ON A.id = B.id
外连接
外连接又分为: 左外连接, 右外连接, 全外连接(MySQL 不支持)
左外连接: LEFT JOIN 或者 LEFT OUTER JOIN
SELECT * FROM A LEFT JOIN B ON A.id = B.id
以 A 表作为基准 (主表), 不管 B 表(从表) 的数据如何, 返回的结果集的行数总是等于 A 表的行数.
右外连接: RIGHT JOIN 或者 RIGHT OUTER JOIN
SELECT * FROM A RIGHT JOIN B ON A.id = B.id
当连接字段都是一样时, 可以使用一个语法糖: select * from a xx join b using(id)
查询结果以主表为主, 如果主表与从表不匹配, 则查询结果中的从表记录为 null.
来源: http://www.bubuko.com/infodetail-3357628.html