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

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

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

  外鏈接包括:左外鏈接、右外鏈接和全外鏈接。code

    左外鏈接:左邊表數據行所有保留,右邊表保留符合鏈接條件的行。orm

    右外鏈接:右邊表數據行所有保留,右邊表保留符合鏈接條件的行。blog

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

示例:it

  數據庫:Oracleio

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

  

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

相關文章
相關標籤/搜索