SQL中的左连接与右连接,内连接有什么不同

SQL中的左连接与右连接,内连接有什么不同

我们来举个例子。天庭上面有一个管理系统:管理系统有个主表:主表记录着各个神仙的基本信息(我们把它当成表A)。还有个表记录着他们这个神仙的详细信息(我们把它当成表B)。

表A的信息为

idAnameposition
1李靖托塔天王
2值年神李丙四值功曹
3增长天王四大天王
4青龙孟章神君四方神

表B的信息为(此神仙有无犯过天条)

IDBNameTHINGS
1NO
3YES上班玩忽职守
4NO
5NO
6YES调戏嫦娥妹妹

刚好赶上天庭蟠桃会,王母就让你统计下,参加蟠桃会的人有无犯事的记录,有的话就取消他参加宴会的资格。

这个时候,你用上了 左连接 方法

语句为下:select A.* ,B.* from A left outer join B on (A.IDA=B.IDB)

IDANAMEpositionIDBNameTHINGS
1李靖托塔天王1NO
2值年神李丙四值功曹NULLNULLNULL
3增长天王四大天王3YES上班玩忽职守
4青龙孟章神君四方神4NO

结果就如同这样,表B中的IDB=5和6这条数据没有展示出来。且IDA=2 这条数据在表B中取null,左连接取的就是FROM后面该表中的所有数据作为查询结果。

但是如果你用了右连接:

语句为下:select A.* ,B.* from A right outer join B on (A.IDA=B.IDB)

IDANAMEpositionIDBNameTHINGS
1李靖托塔天王1NO
3增长天王四大天王3YES上班玩忽职守
4青龙孟章神君四方神4NO
NULLNULLNULL5NO
NULLNULLNULL6YES调戏嫦娥妹妹

这个时候王母一看。什么,居然有人调戏 嫦娥,而且还查不到这个人?王母就会大发雷霆然后限你一天之内找到这个人。

内连接和自然连接的写法一样

select * from A,B where A.IDA=B.IDB

IDANAMEpositionIDBNameTHINGS
1李靖托塔天王1NO
3增长天王四大天王3YES上班玩忽职守
4青龙孟章神君四方神4NO

整体来概述一下,这些的区别是什么:

通俗易懂

左连接:左边有的,右边没有的为null

右连接:左边没有的,右边有的为null

内连接:显示左边右边共有的

转载于:https://www.cnblogs.com/jianshuai520/p/11055519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值