數(shù)據(jù)庫(kù)外連接查詢 數(shù)據(jù)庫(kù)內(nèi)連接和外連接的區(qū)別?
數(shù)據(jù)庫(kù)內(nèi)連接和外連接的區(qū)別??jī)?nèi)連接:指連接結(jié)果僅包含符合連接條件的行,參與連接的兩個(gè)表都應(yīng)該符合連接條件。外連接:連接結(jié)果不僅包含符合連接條件的行同時(shí)也包含自身不符合條件的行。包括左外連接、右外連接和
數(shù)據(jù)庫(kù)內(nèi)連接和外連接的區(qū)別?
內(nèi)連接:指連接結(jié)果僅包含符合連接條件的行,參與連接的兩個(gè)表都應(yīng)該符合連接條件。
外連接:連接結(jié)果不僅包含符合連接條件的行同時(shí)也包含自身不符合條件的行。包括左外連接、右外連接和全外連接。
1、內(nèi)連接
內(nèi)連接,即最常見(jiàn)的等值連接,例:
SELECT * FROM TESTA,TESTBWHERE TESTA.A=TESTB.A
結(jié)果:
2、外連接
外連接分為左外連接,右外連接和全外連接。
左外連接 left outer join 或者 left join
左外連接就是在等值連接的基礎(chǔ)上加上主表中的未匹配數(shù)據(jù),例:
SELECT *FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A=TESTB.A
結(jié)果:
數(shù)據(jù)庫(kù)的內(nèi)連接和外連接有什么區(qū)別?
內(nèi)連接(inner join):返回2個(gè)表中完全符合條件的記錄,結(jié)果集中每個(gè)表的字段內(nèi)容均來(lái)自各自的表;外連接(outer join):返回2個(gè)表中完全符合條件的記錄,再加上2個(gè)表中各自的記錄,結(jié)果集中的字段只有一個(gè)表中有記錄時(shí),另一個(gè)表中的字段均使用空值null填寫。Oracle 外連接1)左外連接 (左邊的表不加限制) (2)右外連接(右邊的表不加限制) (3)全外連接(左右兩表都不加限制) 外連接(Outer Join)outer join則會(huì)返回每個(gè)滿足第一個(gè)(頂端)輸入與第二個(gè)(底端)輸入的聯(lián)接的行。它還返回任何在第二個(gè)輸入中沒(méi)有匹配行的第一個(gè)輸入中的行。外連接分為三種: 左外連接,右外連接,全外連接。 對(duì)應(yīng)SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我們省略outer 這個(gè)關(guān)鍵字。 寫成:LEFT/RIGHT/FULL JOIN。在左外連接和右外連接時(shí)都會(huì)以一張表為基表,該表的內(nèi)容會(huì)全部顯示,然后加上兩張表匹配的內(nèi)容。 如果基表的數(shù)據(jù)在另一張表沒(méi)有記錄。 那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(NULL)。對(duì)于外連接, 也可以使用“( ) ”來(lái)表示。 關(guān)于使用( )的一些注意事項(xiàng): 1.( )操作符只能出現(xiàn)在where子句中,并且不能與outer join語(yǔ)法同時(shí)使用。 2. 當(dāng)使用( )操作符執(zhí)行外連接時(shí),如果在where子句中包含有多個(gè)條件,則必須在所有條件中都包含( )操作符 3.( )操作符只適用于列,而不能用在表達(dá)式上。 4.( )操作符不能與or和in操作符一起使用。 5.( )操作符只能用于實(shí)現(xiàn)左外連接和右外連接,而不能用于實(shí)現(xiàn)完全外連接。2.1 左外連接(Left outer join/ left join) left join是以左表的記錄為基礎(chǔ)的,示例中Dave可以看成左表,BL可以看成右表,它的結(jié)果集是Dave表中的數(shù)據(jù),在加上Dave表和BL表匹配的數(shù)據(jù)。換句話說(shuō),左表(Dave)的記錄將會(huì)全部表示出來(lái),而右表(BL)只會(huì)顯示符合搜索條件的記錄。BL表記錄不足的地方均為NULL.