数据库SQL JOINS笔记汇总
数据库SQL JOINS笔记汇总
可见下图,一共包括7种连接
- 内连接——inner join
- 左连接(左外连接)——left join(left outer join)
- 右连接(右外连接)——right join(right outer join)
- 左连接不包含内连接——left join excluding inner join
- 右连接不包含内连接——right join excluding inner join
- 全连接(全外连接)——full join(full outer join)
- 全连接不包含内连接——full outer join excluding inner join
创建测试数据
以下SQL目的在于创建用于测试的test数据集,并创建user_info和mail_info两个信息表
1 | drop database if exists test; |
user_id表: 
mail_id表 :
内连接——inner join
内连接是一种一一映射关系,就是两张表都有的才能显示出来
用韦恩图表示是两个集合的交集,如图:
1 | # 内连接 |
查询结果
左连接(左外连接)——left join(left outer join)
左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表
用韦恩图表示如下:
1 | # 左连接 |
查询结果
右连接(右外连接)——right join(right outer join)
右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表
用韦恩图表示如下:
1 | # 右连接 |
查询结果:
左连接不包含内连接——left join excluding inner join
这个查询是只查询左边表有的数据,共同有的也不查出来
韦恩图表示如下:
1 | # 左连接不包含内连接 |
查询结果:
右连接不包含内连接——right join excluding inner join
右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表
用韦恩图表示如下:
1 | # 右连接不包含内连接 |
查询结果:

全连接(全外连接)——full join(full outer join)
查询出左表和右表所有数据,但是去除两表的重复数据
韦恩图表示如下:
1 | # 全连接 |
查询结果:

全连接不包含内连接——full outer join excluding inner join
意思就是查询左右表各自拥有的那部分数据
韦恩图表示如下:
1 | # 全连接不包含内连接 |
查询结果:







