內鏈接:指鏈接結果僅包含符合鏈接條件的行,參與鏈接的兩個表都應該符合鏈接條件。數據庫
外鏈接:鏈接結果不只包含符合鏈接條件的行同時也包含自身不符合條件的行。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查詢,也就是內聯查詢。