1.内连接 INNER JOIN:一种一一映射关系,将两张表共有的显示出来,求两个集合的交集
用法: 表A INNER JOIN 表B ON 条件 此过程可以给表起别名,亦可以给要查询的列起显示的别名
2.左连接 LEFT JOIN:左边表的所有数据都显示出来,右边表数据只显示共有的部分,没有对应的部分用空来补齐
用法:表A LEFT JOIN 表B ON 条件 此过程可以给表起别名,亦可以给要查询的列起显示的别名
3.右连接:RIGHT JOIN:与左连接正好相反,右边表的数据都显示,左边数据只显示共有否认部分,没有对应的部分用空来补齐
用法:表A RIGHT JOIN 表B ON 条件 此过程可以给表起别名,亦可以给要查询的列起显示的别名
4.全连接(外连接):左表右表数据全部显示,缺少对应的用空来替代,无重复
用法:表A FULL JOIN 表B 此过程可以给表起别名,亦可以给要查询的列起显示的别名 但是MySQL不支持FULL JOIN
需要用左连接 UNION(去重)右连接来替代 即:表A LEFT JOIN 表B ON 条件 UNION 表A RIGHT JOIN 表B ON 条件
5.左外连接(LEFT JOIN EXCLUDING INNER JOIN):只查询左边独有的数据,查询结果右边用null替代
用法:表A LEFT JOIN 表B ON 条件 where 表B某项 IS NULL
此过程可以给表起别名,亦可以给要查询的列起显示的别名
6.右外连接(RIGHT JOIN EXCLUDING INNER JOIN):只查询右边独有的数据,查询结果左边用null替代
用法:表A RIGHT JOIN 表B ON 条件 where 表A某项 IS NULL
7.外连接不包含内连接(OUTER JOIN EXCLUDING INNER JOIN):查询左右表各自拥有的那部分数据,由于mysql不支持full join
表A LEFT JOIN 表B ON 条件 where 表B某项 IS NULL UNION 表A RIGHT JOIN 表B ON 条件 where 表A某项 IS NULL
七种韦恩图:
参考:https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins