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

相关文章: