1. 程式人生 > >資料庫查詢語句中的內連線和外連線

資料庫查詢語句中的內連線和外連線

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

外連線:連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。

  外連線包括:左外連線、右外連線和全外連線。

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

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

    全外連線:左外連線和右外連線聯合版本。

示例:

  資料庫:Oracle

  表:TESTA,TESTB,TESTC,各有A,B兩列。

  

1.內連線

  內連線,即最常見的等值連線,取出的值都一一對應:

select *
from TESTA,TESTB
where TESTA.A = TESTB.A

  結果:

  

2.外連線

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

  (1)左外連線 left outer join 或者 left join

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

select * 
from TESTA
left outer join TESTB
on TESTA.A = TESTB.A

  結果:

  

  三個表做左外連線:

select *
from TESTA
left outer join TESTB
on TESTA.A = TESTB.A
left outer join TESTC
on TESTA.A = TESTC.A

  結果:

  

  (2)右外連線 right outer join 或者 right join

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

select *
from TESTA
right outer join TESTB
on TESTA.A = TESTB.A

  結果:

  

  (3)全外連線 full outer join 或者 full join

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

select *
from TESTA
full outer join TESTB
on TESTA.A = TESTB.A

  結果:

  

總結:

  1.內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的值。內連線分三種:

    (1)等值連線:在連線條件中使用等於號“=”運算子比較被連線列的值,其查詢結果中列出連線表中的所有列,包括其中的重複列。

    select * from 表1 inner join 表2 on 條件

    (2)不等連線:在連線條件使用除等與“=”運算子以外的其它運算子比較連線的列的值,這些運算子包括>、>=、<=、<、!>、!<、和<>。

    select * from 表1 inner join 表2 on 條件

    (3)自然連線:自然連線是一種特殊的等值連線,他要求兩個關係表中進行連線的必須是相同的屬性列(名字相同),無須新增連線條件,並且在結果中消除重複的屬性列。

    select * from 表1 natural join 表2;

    

  2.外連結不僅包含符合條件的,不符合條件的,也會出現在查詢結果上面,只要是自己外連線那邊的東西。

  外連線分為三種:

        (1)、左外連結       SELECT * FROM 表1 LEFT JOIN 表2 ON 條件;

        (2)、右外連線       SELECT * FROM 表1 RIGHT JOIN 表2 ON 條件;

        (3)、全外連線       SELECT * FROM 表1 FULL JOIN 表2 ON 條件;

 

  3.記住最重要的一點,只要不寫left、 right、 full ,只是使用join,那麼就意味著這個查詢是一個inner join查詢,也就是內聯查