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表字段虽然重名,但查询后会系统会进行区分。我们可以通过 表名.数据 查询两张表连接后指定相应的数据。
注:连接后的表格与原表格是有差异的,因为不管是内连接,左连接、有链接,在连接后都会剔除一部分数据。
左右连接方式一致,只是表放的位置,决定是否为主表。左连接:左边表为主表;右连接右边为主表。(常用左连接)。