> 文档中心 > SQL内连接、左连接、右连接的区别

SQL内连接、左连接、右连接的区别


SQL内连接、左连接、右连接的区别

前言:目前研究生已经毕业,刚刚找到了一份BA数据分析师的工作。目前的工作内容主要是指标的理解和使用SQL将代码写出来。在这里经常用到内连接(inner) join和左连接 left(outer)join等的连接方式。下面直接通过实例进行解释,防止大家进入误区。

1、INNER JOIN (内连接)

下图为表一,表命名为e
在这里插入图片描述
下图为表二,表命名为f
在这里插入图片描述

将表e,f导入到Navicat(Mysql的一个编辑器)中,进行SQL查询
在这里插入图片描述
在这里插入图片描述
查看两个表INNER JOIN(内连接)的结果
在这里插入图片描述
如上图:
1、e,f表通过id进行INNER JOIN(内连接)后,只剩下共有的部分
e表中id 7-17的部分被去除,f表中18-19部分被去除。只剩下1-6的部分。

2、e表的数据和f表字段虽然重名,但查询后会系统会进行区分。那么我们可以通过 表名.数据 查询两张表连接后指定相应的数据。

2、LEFT OUTER JOIN (左连接)

查看两个表LEFT OUTER JOIN(左连接)的结果
在这里插入图片描述
如上图:
1、e,f表通过id进行LEFT JOIN(内连接)后,剩下量e表id1-17的部分和两表id共有的部分。即左连接,LEFT JOIN前面的表作为主表,保留全部数据。同时保留LEFT JOIN右边表f与左表e的公共部分。

2、左表中存在的部分,而右边表不存在,则全部使用NULL代替。

3、e表的数据和f表字段虽然重名,但查询后会系统会进行区分。我们可以通过 表名.数据 查询两张表连接后指定相应的数据。

3、RIGHT OUTER JOIN (右连接)

查看两个表RIGHT OUTER JOIN (右连接)的结果
在这里插入图片描述
1、e,f表通过id进行RIGHT OUTER JOIN(右连接)后,e表保留两表id共有的部分,f表保留全部数据,而左表e中不存在的数据将设置为NULL。即在右连接中,RIGHT OUTER JOIN右边的表f作为主表,保留全部数据。
RIGHT OUTER JOIN右边表f则保留与左表e的公共部分。

2、左表中存在的部分,而右边表不存在,则全部使用NULL代替。

3、e表的数据和f表字段虽然重名,但查询后会系统会进行区分。我们可以通过 表名.数据 查询两张表连接后指定相应的数据。

:连接后的表格与原表格是有差异的,因为不管是内连接,左连接、有链接,在连接后都会剔除一部分数据。
左右连接方式一致,只是表放的位置,决定是否为主表。左连接:左边表为主表;右连接右边为主表。(常用左连接)。