中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中左連接/右連接/等值連接有什么區別

發布時間:2022-01-14 15:57:32 來源:億速云 閱讀:182 作者:小新 欄目:數據庫

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

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

1、三種連接的語法
  為便于更多的技友快速讀懂、理解,我們只討論2張表對象進行連接操作的情況,大于2張表對象進行的連接操作原理也是一樣的。
  左連接(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表中等值的記錄連接在一起,但是不影響記錄集的數量。若是表left_table中的某記錄,無法在表 right_table找到對應的記錄,則此記錄依然顯示在記錄集鐘,只表 right_table需要在查詢顯示的列的值用NULL替代;
  ON字句連接條件中表right_table. columnname=XXX用于控制right_table表是否有符合要求的列值還是用NULL替換的方式顯示在查詢列中,不影響記錄集的數量;
  WHERE字句控制記錄是否符合查詢要求,不符合則過濾掉;
  總結:ON字句控制right_table的列值符合顯示,還是不符合就用NULL替換,不影響最終符合查詢要求的記錄集;WHERE字句是控制那些記錄是顯示在最終的記錄集中。
  右連接(RIGHT JOIN)
  ON字句連接條件,用于把2表中等值的記錄連接在一起,若是表right_table中的某記錄,無法在表left_table找到對應的記錄,則表 left_able需要在查詢顯示的列的值用NULL替代;
  ON字句連接條件中表left_table. columnname=XXX用于控制left_table表是否有符合要求的列值,還是用NULL替換的方式顯示在查詢列表中;
  WHERE字句控制記錄是否符合查詢要求,不符合則過濾掉;
   總結:ON字句控制left_table的列值符合顯示,還是不符合而用NULL替換掉,不影響最終符合查詢要求的記錄集;WHERE字句是控制那些記 錄是顯示在最終的記錄集中。我們會發現LEFT JOIN 和RIGHT JOIN是類似的,只是以連接關鍵字左邊還是右邊表為準匹配。
  等值連接
  ON 字句連接條件,不再與左連接或右連接的功效一樣,除了作為2表記錄匹配的條件外,還會起到過濾記錄的作用,若left_table中記錄無法在right_table中找到對應的記錄,則會被過濾掉;
  WHERE字句,不管是涉及表left_table、表right_table上的限制條件,還是涉及2表連接的條件,都會對記錄集起到過濾作用,把不符合要求的記錄刷選掉;

  連接語法的測試環境
  測試用表結構


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';

  用于測試的數據
  重復執行10次INSERT*** VALUE ***語句:

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正安县| 胶南市| 新宁县| 文化| 从江县| 桓台县| 屏东县| 南华县| 遂川县| 柞水县| 蒙城县| 吉隆县| 多伦县| 休宁县| 革吉县| 祥云县| 银川市| 曲沃县| 普兰店市| 湟中县| 四平市| 尚志市| 桐庐县| 仪征市| 张家口市| 寿光市| 韶关市| 星子县| 岳西县| 和顺县| 礼泉县| 南昌县| 新平| 平远县| 永济市| 崇州市| 邳州市| 神木县| 报价| 宜州市| 玛纳斯县|