數據庫查詢語句中的內連接和外連接


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

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

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

    左外連接:左邊表數據行全部保留,右邊表保留符合連接條件的行。

    右外連接:右邊表數據行全部保留,右邊表保留符合連接條件的行。

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

示例:

  數據庫: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查詢,也就是內聯查詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM