我用內(nèi)連接查詢和外連接查詢的結(jié)果是一樣的,兩者有什么不同?需要查找兩張表同時(shí)存在的數(shù)據(jù),使用內(nèi)連接需要查找兩張表中一張表存在,另一張表不存在的時(shí)候使用左外鏈接 或 右外鏈接內(nèi)連接的查詢結(jié)果都是滿足連接條件的元組。但有時(shí)我們也希望輸出那些不滿足連接條件的元組信息。比如,我們想知道每個(gè)學(xué)生的選課情況,包括已經(jīng)選課的學(xué)生(這部分學(xué)生的學(xué)號(hào)在學(xué)生表中有,在選課表中也有,是滿足連接條件的),也包括沒(méi)有選課的學(xué)生(這部分學(xué)生的學(xué)號(hào)在學(xué)生表中有,但在選課表中沒(méi)有,不滿足連接條件),這時(shí)就需要使用外連接。外連接是只限制一張表中的數(shù)據(jù)必須滿足連接條件,而另一張表中的數(shù)據(jù)可以不滿足連接條件的連接方式。3種外連接:1)左外連接(LEFTOUTER JOIN)如果在連接查詢中,連接管子左端的表中所有的元組都列出來(lái),并且能在右端的表中找到匹配的元組,那么連接成功。如果在右端的表中,沒(méi)能找到匹配的元組,那么對(duì)應(yīng)的元組是空值(NULL)。這時(shí),查詢語(yǔ)句使用關(guān)鍵字LEFT OUTERJOIN,也就是說(shuō),左外連接的含義是限制連接關(guān)鍵字右端的表中的數(shù)據(jù)必須滿足連接條件,而不關(guān)左端的表中的數(shù)據(jù)是否滿足連接條件,均輸出左端表中的內(nèi)容。例如:要查詢所有學(xué)生的選課情況,包括已經(jīng)選課的和還沒(méi)有選課的學(xué)生,查詢語(yǔ)句為SELECT學(xué)生表.學(xué)號(hào),姓名,班級(jí),課程號(hào),成績(jī)FROM學(xué)生表LEFT OUTER JOIN選課表ON學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)左外連接查詢中左端表中的所有元組的信息都得到了保留。2)右外連接(RIGHTOUTERJOIN)右外連接與左外連接類似,只是右端表中的所有元組都列出,限制左端表的數(shù)據(jù)必須滿足連接條件,而不管右端表中的數(shù)據(jù)是否滿足連接條件,均輸出表中的內(nèi)容。例如:同上例內(nèi)容,查詢語(yǔ)句為SELECT學(xué)生表.學(xué)號(hào),姓名,班級(jí),課程號(hào),成績(jī)FROM學(xué)生表RIGHTOUTERJOIN選課表ON學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)右外連接查詢中右端表中的所有元組的信息都得到了保留。3)全外連接(FULL OUTER JOIN)全外連接查詢的特點(diǎn)是左、右兩端表中的元組都輸出,如果沒(méi)能找到匹配的元組,就使用NULL來(lái)代替。例如:同左外連接例子內(nèi)容,查詢語(yǔ)句為SELECT學(xué)生表.學(xué)號(hào),姓名,班級(jí),課程號(hào),成績(jī)FROM學(xué)生表FULL OUTER JOIN選課表ON學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)全外連接查詢中所有表中的元組信息都得到了保留。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注