表A:
A B
001 10A
002 20A
表B:
A B
001 10b
003 30b
表C:
A B
001 10c
004 40c
1.内连接就是常见的等值连接 SELECT * FROM TESTA,TESTB WHERE TESTA.A=TESTB.A
结果
A
B
A
B
001
10A
001
10B B.外连接
2 左外连接 left outer join 或者 left join
左外连接就是在等值连接的基础上加上主表中的未匹配数据,例: SELECT * FROM TESTA LEFTOUTERJOIN 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
20A
三个表做左外连接 SELECT * FROM TESTA LEFTOUTERJOIN TESTB ON TESTA.A=TESTB.A LEFTOUTERJOIN 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
3. 右外连接 right outer join 或者 right join
右外连接是在等值连接的基础上加上被连接表的不匹配数据 SELECT * FROM TESTA RIGHTOUTERJOIN 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