mysql 自然连接、内连接、外连接的区别

数据库中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接(注意:mysql不支持全外连接)

首先,我们先来建两张表,第一张表命名为kemu,第二张表命名为score:

在这里插入图片描述
在这里插入图片描述

一、left join
顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:

select
*
from
kemu
left join score on kemu.id = score.id
结果集:
在这里插入图片描述

在这里插入图片描述

二、right join

“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:

select
*
from
kemu
right join score on kemu.id = score.id
结果集:
在这里插入图片描述

在这里插入图片描述

三、join
join,其实就是“inner join”,为了简写才写成join,两个是表示一个的,内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来,这个用的情况也是挺多的,如下

select
*
from
kemu
join score on kemu.id = score.id
结果集:

在这里插入图片描述

在这里插入图片描述

以上就是三种连接的区别!

内外联结练习代码题
CREATE TABLE table1(
a VARCHAR(20),
b VARCHAR(20) NOT NULL DEFAULT ‘’,
c VARCHAR(20) NOT NULL DEFAULT ‘’,
PRIMARY KEY(a)
);

CREATE TABLE table2(
c VARCHAR(20),
d VARCHAR(20) NOT NULL DEFAULT ‘’,
e VARCHAR(20) NOT NULL DEFAULT ‘’
);

insert into table1 values(‘1’ , ‘2’ , ‘3’);
insert into table1 values(‘5’ , ‘6’ , ‘7’);

insert into table2 values(‘3’ , ‘4’ , ‘5’);
insert into table2 values(‘8’ , ‘9’ , ‘1’);
在这里插入图片描述

  1. 自然连接(natural join)
    自然连接是一种特殊的等值连接,他要求两个关系表中进行连接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的属性列。

Select * from table1 natural join table2;
结果:

  1. 内连接(inner join ,inner可省略 )
    内连接基本与自然连接相同,不同之处在于自然连接的是同名属性列的连接,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。

Select * from table1 inner join table2 on table1.A=table2.E;

然连接时某些属性值不同则会导致这些数据会被舍弃,那如何保存这些会被丢失的信息呢,外连接就解决了相应的问题。外连接分为左外连接、右外连接、全外连接。外连接必须用using或on指定连接条件。
在这里插入图片描述

3.1左外连接(left outer join,outer可以省略)
左外连接是在两表进行自然连接,只把左表保留在结果集中,右表对应的列上填null。

Select * from table1 left join table2 on table1.C=table2.C
在这里插入图片描述

3.2右外连接(rignt outer join,outer可以省略)
右外连接是在两表进行自然连接,只把右表要舍弃的保留在结果集中,左表对应的列上填null。

Select * from table1 right outer join table2 on table1.C=table2.C
结果:
在这里插入图片描述

3.3全外连接(full outer join 其中outer可以省略 )(mysql不⽀持)

全外连接是在两表进⾏⾃然连接,把左表和右表都保留在结果集中,相对应的列上填null。

结果:

Select * from table1 right outer join table2 on table1.C=table2.C
Select * from table1 full join table2 on table1.C=table2.C;
– mysql的全外连接可以使⽤union关键字将左连接和右链接的结果合并

Select * from table1 left outer join table2 on table1.C=table2.C
UNION
Select * from table1 right outer join table2 on table1.C=table2.C;
在这里插入图片描述

全方位构建数据挖掘能力,热门行业真实项目实操,数十个实战案例,内容包括 Tableau PowerBI Python SQL HIVE Hadoop SPSS 数据可视化,数据挖掘,面试题讲解

----转自某乎

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值