91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

班戈县| 黄大仙区| 乌兰浩特市| 固阳县| 双鸭山市| 东山县| 高阳县| 仪征市| 孝感市| 固镇县| 苏尼特右旗| 卢龙县| 财经| 修文县| 左权县| 揭阳市| 馆陶县| 福州市| 高陵县| 农安县| 安陆市| 惠来县| 凤翔县| 萨迦县| 岑巩县| 吴堡县| 措勤县| 台安县| 依安县| 武邑县| 武川县| 比如县| 堆龙德庆县| 三原县| 惠来县| 连云港市| 嫩江县| 融水| 徐闻县| 余姚市| 伊吾县|