資料庫內連線和外連線

2021-06-22 06:01:08 字數 3518 閱讀 9137

資料庫中涉及兩個表之間的資料查詢通常使用連線的方法實現。連線分為內連線和外連線。

內連線:

指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。

外連線:

連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。包括左外連線、右外連線和全外連線。

左外連線:

左邊表資料行全部保留,右邊表保留符合連線條件的行

右外連線:

右邊表資料行全部保留,左邊表保留符合連線條件的行

全外連線:

左外連線 union 右外連線

例子:

資料庫版本:oracle 9i

表testa,testb,testc,各有a, b兩列 a

b001     

10a 

00220a

a b

001     

10b003

30b

a b

001     

10c004

40c

連線分為兩種:內連線與外連線。

a.內連線

內連線,即最常見的等值連線,例:

select

fromtesta,testb

wheretesta.a=testb.a結果

a b

a b

001    

10a    

001   

10b   

b.外連線

外連線分為左外連線,右外連線和全外連線。

1.左外連線left outer join 或者 left join

左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:

select*

fromtesta 

left outer jointestb 

ontesta.a=testb.a

oracle 支援另一種寫法

select

fromtesta,testb

wheretesta.a=testb.a(+)

結果: a

b a

b 001    

10a    

001    

10b  

00210b

三個表做左外連線

select*

fromtesta 

left outer jointestb 

ontesta.a=testb.a

left outer jointestc

ontesta.a=testc.a

oracle 支援的另外一種寫法

select*

fromtesta,testb,testc

wheretesta.a=testb.a(+)

andtesta.a=testc.a(+)

結果: a

b ab a

b001   

10a    

001   

10b   

001   

10c002

20a

2.右外連線right outer join 或者 right join

右外連線是在等值連線的基礎上加上被連線表的不匹配資料

select*

fromtesta 

right outer jointestb 

ontesta.a=testb.a

oracle支援的另一種寫法

select*

fromtesta,testb

wheretesta.a(+)=testb.a

結果: a

b ab

001   

10a   

001   

10b

00330b

3.全外連線full outer join 或者 full join

全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上

select

fromtesta 

full outer jointestb

ontesta.a=testb.a

全外連線的等價寫法,對同一表先做左連線,然後右連線

selecttesta.*,testb.*

fromtesta

left outer jointestb

ontesta.a=testb.a

union

selecttesta.*,testb.*

fromtestb

left outer jointesta

ontesta.a=testb.a

結果: a

b a

b 001   

10a   

001   

10b002

20a

00330b

資料庫 內連線 外連線 左連線

總結 內連線 僅僅顯示匹配的行 外連線 設法顯示不匹配的行,包括左 外 連線 右 外 連線 全 外 連線 左 外 連線 左表的行全顯示 右表不存在匹配時填null 右 外 連線 右表的行全顯示 左表不存在匹配時填null 全 外 連線 左連線和右連線的結果再做合併 union sql ansi的寫法...

資料庫內連線和外連線的區別

內連線 指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。外連線 連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。包括左外連線 右外連線和全外連線。1 內連線 內連線,即最常見的等值連線,例 select from testa,testbwhere testa.a ...

資料庫 內連線 左外連線 右外連線 全外連線

內連線中,只有滿足連線條件的元組才能作為結果輸出,即當任乙個表中為null則不會輸出。sql 語句 123 select first.cno,second.cpno from course first,course second where first.cpno second.cno 如果在查詢時需...