真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL中左連接/右連接/等值連接有什么區(qū)別

這篇文章給大家分享的是有關(guān)MySQL中左連接/右連接/等值連接有什么區(qū)別的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

10年積累的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有芮城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

從業(yè)以來,發(fā)現(xiàn)很多技術(shù)人員和同事向筆者或是在網(wǎng)絡(luò)上咨詢過LEFT JOIN 如何寫及其特性,而等值連接一般都沒問題,幾年前曾經(jīng)寫過一份Microsoft SQL Server版本的,此次特意再寫一份MySQL版本的,希望閱讀過的技術(shù)人員,可以起到解惑功效。

1、三種連接的語法
為便于更多的技友快速讀懂、理解,我們只討論2張表對(duì)象進(jìn)行連接操作的情況,大于2張表對(duì)象進(jìn)行的連接操作原理也是一樣的。
左連接(LEFT JOIN )


SELECT M.columnname……,N.* columnname…..FROM left_table M LEFT JOIN right_table N ON M. columnname_join=N. columnname_join AND N. columnname=XXX WHERE M.columnname=XXX…..

右連接(RIGHT JOIN)


SELECT M.columnname……,N.* columnname…..FROM left_table M RIGHT JOIN right_table N ON M. columnname_join=N. columnname_join AND M. columnname=XXXWHERE N.columnname=XXX…..

等值連接


SELECT M.columnname……,N.* columnname…..FROM left_table M [INNER] JOIN right_table N ON M. columnname_join=N. columnname_joinWHERE M.columnname=XXX….. AND N.columnname=XXX….

或者


SELECT M.columnname……,N.* columnname…..FROM left_table M  ,  right_table NWHERE M. columnname_join=N. columnname_join  AND  M.columnname=XXX….. AND N.columnname=XXX….

備注:注意上面SQL語法中加粗的紅色字體部分,三種不同連接語法的變化。

三種連接的特性
左連接(LEFT JOIN )
 ON字句連接條件,用于把2表中等值的記錄連接在一起,但是不影響記錄集的數(shù)量。若是表left_table中的某記錄,無法在表 right_table找到對(duì)應(yīng)的記錄,則此記錄依然顯示在記錄集鐘,只表 right_table需要在查詢顯示的列的值用NULL替代;
ON字句連接條件中表right_table. columnname=XXX用于控制right_table表是否有符合要求的列值還是用NULL替換的方式顯示在查詢列中,不影響記錄集的數(shù)量;
WHERE字句控制記錄是否符合查詢要求,不符合則過濾掉;
總結(jié):ON字句控制right_table的列值符合顯示,還是不符合就用NULL替換,不影響最終符合查詢要求的記錄集;WHERE字句是控制那些記錄是顯示在最終的記錄集中。
右連接(RIGHT JOIN)
ON字句連接條件,用于把2表中等值的記錄連接在一起,若是表right_table中的某記錄,無法在表left_table找到對(duì)應(yīng)的記錄,則表 left_able需要在查詢顯示的列的值用NULL替代;
ON字句連接條件中表left_table. columnname=XXX用于控制left_table表是否有符合要求的列值,還是用NULL替換的方式顯示在查詢列表中;
WHERE字句控制記錄是否符合查詢要求,不符合則過濾掉;
 總結(jié):ON字句控制left_table的列值符合顯示,還是不符合而用NULL替換掉,不影響最終符合查詢要求的記錄集;WHERE字句是控制那些記 錄是顯示在最終的記錄集中。我們會(huì)發(fā)現(xiàn)LEFT JOIN 和RIGHT JOIN是類似的,只是以連接關(guān)鍵字左邊還是右邊表為準(zhǔn)匹配。
等值連接
ON 字句連接條件,不再與左連接或右連接的功效一樣,除了作為2表記錄匹配的條件外,還會(huì)起到過濾記錄的作用,若left_table中記錄無法在right_table中找到對(duì)應(yīng)的記錄,則會(huì)被過濾掉;
WHERE字句,不管是涉及表left_table、表right_table上的限制條件,還是涉及2表連接的條件,都會(huì)對(duì)記錄集起到過濾作用,把不符合要求的記錄刷選掉;

連接語法的測(cè)試環(huán)境
測(cè)試用表結(jié)構(gòu)


CREATE TABLE left_table(ID INT UNSIGNED NOT NULL AUTO_INCREMENT,                     Username VARCHAR(40) NOT NULL,                     Birthday DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',                     CityID     SMALLINT NOT NULL DEFAULT 0,                CreatDate  TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',                AlterDate  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,                         PRIMARY KEY(ID),                         KEY idx_username(Username)                 )ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';     CREATE TABLE right_table(UID INT UNSIGNED NOT NULL ,                 CollectNum MEDIUMINT NOT NULL DEFAULT 0,                 BuyNum     MEDIUMINT NOT NULL DEFAULT 0,                 SearchNum  MEDIUMINT NOT NULL DEFAULT 0,                 CreatDate  TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',                AlterDate  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,                PRIMARY KEY(UID)                    )ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

用于測(cè)試的數(shù)據(jù)
重復(fù)執(zhí)行10次INSERT*** VALUE ***語句:

感謝各位的閱讀!關(guān)于“MySQL中左連接/右連接/等值連接有什么區(qū)別”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


網(wǎng)站名稱:MySQL中左連接/右連接/等值連接有什么區(qū)別
轉(zhuǎn)載來源:http://weahome.cn/article/psesjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部