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

原创 2011年01月08日 15:39:00

转自:http://www.itwis.com/html/database/oracle/20080115/847.html

数据库版本: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

 

 

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

数据库版本:Oracle 9i 表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B ...
  • wuseyukui
  • wuseyukui
  • 2013年11月01日 23:39
  • 598

Oracle内连接、左外连接、右外连接、全外连接

表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B 001 10B 00...
  • futdktyx
  • futdktyx
  • 2013年12月06日 13:46
  • 1650

内连接、左外连接、右外连接、交叉连接及其区别

首先建立两张表A、B。 表A: Aid:int类型,无符号递增,主键 name:varchar类型 表B: Bid:int类型,无符号递增,主键 name:varchar类型 age:int类型 ...
  • xukun5137
  • xukun5137
  • 2016年06月20日 19:49
  • 2239

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

Oracle内连接、左外连接、右外连接、全外连接小总结 数据库版本:Oracle 9i 连接n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。 表TE...
  • haiross
  • haiross
  • 2013年12月30日 13:53
  • 634

【转】Oracle内连接、外连接、右外连接、全外连接小总结

转自:http://www.blogjava.net/hello-yun/archive/2011/04/08/347890.html
  • u012816536
  • u012816536
  • 2014年06月17日 21:09
  • 251

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

下面有三张表:testA、testB、testC testA            A B 1 1A 2 2A   testB    ...
  • urbanhunter007
  • urbanhunter007
  • 2013年03月05日 17:01
  • 184

Mysql 内连接、外连接、全连接和交叉连接

为了演示方便,提前准备了两张表department和employees,其中的字段和数据如图所示: department   employees 连接分为:内连接、外连接、交叉连接 一、内连...
  • u013215018
  • u013215018
  • 2016年10月13日 18:14
  • 4630

数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接

SQL数据库的连接:内连接、和外连接(左外连接、右外连接、和全连接) 本次实验在MySQL数据库中进行,数据库初始表如下: 一、内连接:结果仅包含符合连接条件的两表中的行。如下: 二、...
  • u012050154
  • u012050154
  • 2016年09月10日 22:30
  • 4617

关于内连接、外连接、笛卡尔积

内连接 (inner   join)     内连接的特性是只显示符合连接条件的记录。  通过比较源表间共享的列的值从多个源表检索行的操作。内联接排除来自不具有与其它源表中的行匹配的行的源表的行。...
  • Baple
  • Baple
  • 2012年02月10日 10:46
  • 6713

Oracle (内连接)与(外连接)区别

表stu id name 1, Jack 2, Tom 3, Kity 4, nono 表exam id grade 1, 56 2, 76 11, 89 内连接(显示两表匹配的id) select ...
  • maxracer
  • maxracer
  • 2012年04月26日 14:59
  • 7909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle内连接、外连接、右外连接、全外连接小总结
举报原因:
原因补充:

(最多只允许输入30个字)