Oracle内连接、外连接、右外连接、全外连接小总结

本文详细介绍了 Oracle 数据库中 SQL 的连接类型,包括内连接、左外连接、右外连接及全外连接,并通过具体示例展示了不同连接方式的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库版本: Oracle 9i

TESTA,TESTB,TESTC, 各有 A, B 两列

A

B

001

10A

002

20A

A

B

001

10B

003

30B

A

B

001

10C

004

40C

连接分为两种:内连接与外连接。

A .内连接

内连接,即最常见的等值连接,例:

SELECT  * 
FROM  TESTA,TESTB
WHERE  TESTA.A=TESTB.A


结果

A

B

A

B

001

10A

001

10B

B. 外连接

外连接分为左外连接,右外连接和全外连接。

1.   

左外连接  left outer join  或者  left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT  *
FROM  TESTA 
LEFT  OUTER  JOIN  TESTB 
ON  TESTA.A=TESTB.A

Oracle  支持另一种写法

SELECT  * 
FROM  TESTA,TESTB
WHERE  TESTA.A=TESTB.A(+)

结果:

A

B

A

B

001

10A

001

10B

002

10B

三个表做左外连接

SELECT  *
FROM  TESTA 
LEFT  OUTER  JOIN  TESTB 
ON  TESTA.A=TESTB.A
LEFT  OUTER  JOIN  TESTC
ON  TESTA.A=TESTC.A

Oracle  支持的另外一种写法

SELECT  *
FROM  TESTA,TESTB,TESTC
WHERE  TESTA.A=TESTB.A(+)
AND  TESTA.A=TESTC.A(+)

结果:

A

B

A

B

A

B

001

10A

001

10B

001

10C

002

20A

2.   右外连接  right outer join  或者  right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT  *
FROM  TESTA 
RIGHT  OUTER  JOIN  TESTB 
ON  TESTA.A=TESTB.A

Oracle 支持的另一种写法

SELECT  *
FROM  TESTA,TESTB
WHERE  TESTA.A(+)=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

003

30B

3. 全外连接   full outer join  或者  full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

SELECT  * 
FROM  TESTA 
FULL  OUTER  JOIN  TESTB
ON  TESTA.A=TESTB.A

全外连接的等价写法,对同一表先做左连接,然后右连接

SELECT   TESTA.*,TESTB.*
FROM  TESTA
LEFT  OUTER  JOIN  TESTB
ON  TESTA.A=TESTB.A
UNION
SELECT  TESTA.*,TESTB.*
FROM  TESTB
LEFT  OUTER  JOIN  TESTA
ON  TESTA.A=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

002

20A

003

30B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值