區(qū)別:內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行;外連接,返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接)、右表(右外連接)或兩個(gè)邊接表(全外連接)中的所有數(shù)據(jù)行。
兩個(gè)表的連接,是通過將一個(gè)表中的一列或者多列同另一個(gè)表中的列鏈接而建立起來的。用來連接兩張表的表達(dá)式組成了連接條件。當(dāng)連接成功后,第二張表中的數(shù)據(jù)就同第一張表連接起來了,并形成了復(fù)合結(jié)果集–包括兩張表中數(shù)據(jù)行的計(jì)劃。簡單地說,就是兩張表有了子集,雖然只是暫時(shí)的? ?
有兩者基本類型的的連接,inner和outer連接。兩種類型的主要區(qū)別在于,即使是在連接條件不滿足的情況下,外部連接也會(huì)在結(jié)果集內(nèi)返回行,而內(nèi)部連接不會(huì)在結(jié)果集類返回行??
當(dāng)外部連接不滿足連接條件時(shí),通常返回一個(gè)表中的列,但是第二個(gè)表中沒有返回值–為NULL
(一)內(nèi)連接? ?
內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分三種:? ?
1、等值連接:在連接條件中使用等于號(=)運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。?
2、不等連接: 在連接條件使用除等于運(yùn)算符以外的其它比較運(yùn)算符比較被連接的 列的列值。這些運(yùn)算符包括>、>=、、!。?
3、自然連接:在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。
(二) 外連接
外連接,返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接或左連接))、右表(右外連接或右連接)或兩個(gè)邊接表(全外連接)中的所有數(shù)據(jù)行。
left join(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄;
right join(右聯(lián)接) 返回包括右表中的所有記錄和左表中聯(lián)結(jié)字段相等的記錄;
例如1:
SELECT?a.*,b.*?FROM?luntan?LEFT?JOIN?usertable?as?b??? ?ON?a.username=b.username
例如2:
SELECT?a.*,b.*? ?FROM?city?as?a?FULL?OUTER?JOIN?user?as?b? ?ON?a.username=b.username
更多編程相關(guān)知識,請?jiān)L問:編程學(xué)習(xí)!!