小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

SQL中inner join、outer join和cross join的區(qū)別

 liang1234_ 2018-07-25

對(duì)于SQL中inner join、outer join和cross join的區(qū)別很多人不知道,我也是別人問起,才查找資料看了下,跟自己之前的認(rèn)識(shí)差不多,如果你使用join連表,缺陷的情況下是inner join,另外,開發(fā)中使用的left join和right join屬于outer join,另外outer join還包括full join.下面我通過圖標(biāo)讓大家認(rèn)識(shí)它們的區(qū)別。
現(xiàn)有兩張表,Table A 是左邊的表。Table B 是右邊的表。其各有四條記錄,其中有兩條記錄name是相同的:
Table A 是左邊的表。Table B 是右邊的表。

1.INNER JOIN 產(chǎn)生的結(jié)果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
INNER JOIN 產(chǎn)生的結(jié)果是AB的交集          INNER JOIN 產(chǎn)生的結(jié)果是AB的交集
2.LEFT [OUTER] JOIN 產(chǎn)生表A的完全集,而B表中匹配的則有值,沒有匹配的則以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
LEFT [OUTER] JOIN 產(chǎn)生表A的完全集,而B表中匹配的則有值           LEFT [OUTER] JOIN 產(chǎn)生表A的完全集,而B表中匹配的則有值
3.RIGHT [OUTER] JOIN 產(chǎn)生表B的完全集,而A表中匹配的則有值,沒有匹配的則以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name
圖標(biāo)如left join類似。

4.FULL [OUTER] JOIN 產(chǎn)生A和B的并集。對(duì)于沒有匹配的記錄,則會(huì)以null做為值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 
你可以通過is NULL將沒有匹配的值找出來:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null 
 FULL [OUTER] JOIN 產(chǎn)生A和B的并集           FULL [OUTER] JOIN 產(chǎn)生A和B的并集

5. CROSS JOIN 把表A和表B的數(shù)據(jù)進(jìn)行一個(gè)N*M的組合,即笛卡爾積。如本例會(huì)產(chǎn)生4*4=16條記錄,在開發(fā)過程中我們肯定是要過濾數(shù)據(jù),所以這種很少用。
SELECT * FROM TableA CROSS JOIN TableB 
相信大家對(duì)inner join、outer join和cross join的區(qū)別一目了然了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多