内连接、外连接和全连接的区别

本文深入解析了SQL中各种连接类型的应用场景与实现方式,包括内连接、左外连接、右外连接及全连接,通过具体实例帮助理解不同连接类型如何处理表间数据关系。

转载自 https://blog.csdn.net/thebigdipperbdx/article/details/83685439

 

举例说明

  • 假设您有两个表,每个表只有一个列,表数据如下

 

A    B
-    -
1    3
2    4
3    5
4    6

注意,(1,2)是A表唯一的,(3,4)是公共的,并且(5,6)是B表独有的

内连接

内连接是A表的所有行交上B表的所有行得出的结果集

select * from a INNER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

左外连接

左外连接是A表的所有行匹配上B表得出的结果集

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4

外连接

外连接是B表的所有行匹配上A表得出的结果集

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a(+) = b.b;

a    |  b
-----+----
3    |  3
4    |  4
null |  5
null |  6

全连接

全连接是A表的所有行并上B表的所有行得出的结果集,Oracle数据库支持full join,mysql是不支持full join的

select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5

参考文档:

  1. https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值