最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中JOIN連接的基本用法實(shí)例

 更新時(shí)間:2022年06月02日 11:46:49   作者:KKKLxxx  
大家對(duì)join應(yīng)該都不會(huì)陌生,join可以將兩個(gè)表連接起來(lái),下面這篇文章主要給大家介紹了關(guān)于MySQL中JOIN連接用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

join流程詳解

join 是指 將兩個(gè)表連接起來(lái),兩個(gè)表分別為 驅(qū)動(dòng)表 和 被驅(qū)動(dòng)表。

我們拿下面的這個(gè)sql舉例,

select t1.id,t2.id  from t1 inner join t2 on t1.id = t2.id  where t1.id > 10;

t1和t2 都對(duì) id 建立了索引,我們假設(shè) t1 是驅(qū)動(dòng)表,t2是被驅(qū)動(dòng)表。

join流程如下:

1、MySQL每次從t1中讀取一行滿足過(guò)濾條件t1.id>10的記錄,如果有索引的話,就利用索引快速定位到表t1中符合t1.id>10的記錄。如果沒(méi)有索引的話,就從頭到尾遍歷,慢慢的查出表t1中符合t1.id>10的記錄。

2、當(dāng)從t1中讀取到一條記錄r1后,就根據(jù)連接的條件,也就是 on關(guān)鍵字后的條件,去t2中對(duì)應(yīng)的t2中的記錄,將t1的記錄和t2的記錄組合返回給客戶端.

具體的說(shuō)就是,當(dāng)從t1中得到一條記錄r1的時(shí)候,需要根據(jù)連接條件 t1.id = t2.id,也就是去t2中查詢是否存在記錄r2 ,其中r2.id = r1.id。
也就是執(zhí)行 select t2.id from t2 where t2.id = r1.id

如果有t2的id有索引的話,那么查詢速度是很快的,否則就只能全盤(pán)掃描了。

3、就這樣,依次的讀取t1中符合條件的記錄,然后查詢t2,直到t1中的記錄讀取完畢

從上述流程可以看出,join的大致過(guò)程就是從驅(qū)動(dòng)表中挨個(gè)讀取符合條件的記錄,然后根據(jù)連接條件到被驅(qū)動(dòng)表中找出符合條件的記錄,將其組合到一起返回給客戶端。

JOIN用于連表查詢,主要有5種用法。下面分別演示這5種用法

隨便建2張表,結(jié)構(gòu)如下

 字段col1用來(lái)使兩張表有一個(gè)同名字段的(但其實(shí)沒(méi)什么用,因?yàn)椴樵儣l件都需要用ON來(lái)指定,這里只是說(shuō)明一下如果有相同的字段名也沒(méi)什么影響)

一、笛卡爾積:CROSS JOIN

CROSS JOIN使兩張表的所有字段直接進(jìn)行笛卡爾積,假設(shè)表1有m條數(shù)據(jù),表2有n條數(shù)據(jù),則結(jié)果數(shù)量為m*n條

SELECT * FROM tab1 CROSS JOIN tab2

結(jié)果

二、內(nèi)連接:INNER JOIN

內(nèi)連接需要用ON來(lái)指定兩張表需要比較的字段,最終結(jié)果只顯示滿足條件的數(shù)據(jù)

SELECT * FROM tab1 INNER JOIN tab2 ON tab1.id1 = tab2.id2

 結(jié)果

注意到內(nèi)連接只把滿足ON條件的數(shù)據(jù)相連接,與笛卡爾積不同

三、左連接:LEFT JOIN

左連接可以看做在內(nèi)連接的基礎(chǔ)上,把左表中不滿足ON條件的數(shù)據(jù)也顯示出來(lái),但結(jié)果中的右表部分中的數(shù)據(jù)為NULL

SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2

結(jié)果

四、右連接:RIGHT JOIN

右連接就是與左連接完全相反

SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2

結(jié)果

五、全連接:OUTER JOIN

全連接就是左連接和右連接的并集,但是MySQL中并不支持全連接的寫(xiě)法

SELECT * FROM tab1 OUTER JOIN tab2 ON tab1.id1 = tab2.id2

不過(guò)可以用UNION聯(lián)合左連接和右連接的結(jié)果來(lái)代替

SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2
UNION
SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2

結(jié)果

總結(jié)

到此這篇關(guān)于MySQL中JOIN連接基本用法的文章就介紹到這了,更多相關(guān)MySQL JOIN用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL之使用WITH子句和臨時(shí)表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選方式

    MySQL之使用WITH子句和臨時(shí)表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選方式

    這篇文章主要介紹了MySQL之使用WITH子句和臨時(shí)表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • linux下備份MYSQL數(shù)據(jù)庫(kù)的方法

    linux下備份MYSQL數(shù)據(jù)庫(kù)的方法

    這是一個(gè)眾所周知的事實(shí),對(duì)你運(yùn)行中的網(wǎng)站的MySQL數(shù)據(jù)庫(kù)備份是極為重要的。
    2010-02-02
  • 詳解MySQL日期 字符串 時(shí)間戳互轉(zhuǎn)

    詳解MySQL日期 字符串 時(shí)間戳互轉(zhuǎn)

    本篇文章主要介紹了詳解MySQL日期 字符串 時(shí)間戳互轉(zhuǎn),詳解date轉(zhuǎn)字符串、date轉(zhuǎn)時(shí)間戳、字符串轉(zhuǎn)date、字符串轉(zhuǎn)時(shí)間戳、時(shí)間戳轉(zhuǎn)date,時(shí)間戳轉(zhuǎn)字符串,有興趣的可以了解一下。
    2017-01-01
  • 解讀mysql的for update用法

    解讀mysql的for update用法

    這篇文章主要介紹了解讀mysql的for update用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql 8.0.17 安裝配置方法圖文教程

    mysql 8.0.17 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.17 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 淺談MySQL表空間回收的正確姿勢(shì)

    淺談MySQL表空間回收的正確姿勢(shì)

    隨著時(shí)間的推移,表里面的數(shù)據(jù)越來(lái)越多,表數(shù)據(jù)文件越來(lái)越大,數(shù)據(jù)庫(kù)占用的空間自然也逐漸增長(zhǎng),本文主要介紹了MySQL表空間回收,感興趣的可以了解一下
    2021-09-09
  • MySQL聚簇索引、非聚簇索引、覆蓋索引詳解

    MySQL聚簇索引、非聚簇索引、覆蓋索引詳解

    這篇文章詳細(xì)介紹了聚簇索引、非聚簇索引和覆蓋索引的概念,并通過(guò)圖示和實(shí)例說(shuō)明了索引查找的過(guò)程和回表查詢的概念,同時(shí),文章也提到了覆蓋索引的優(yōu)點(diǎn)和弊端,并給出了適用場(chǎng)景
    2024-12-12
  • mysql密碼忘記后如何修改密碼(2022年最新版詳細(xì)教程保姆級(jí))

    mysql密碼忘記后如何修改密碼(2022年最新版詳細(xì)教程保姆級(jí))

    因?yàn)殚L(zhǎng)時(shí)間不操作mysql而忘記root密碼的朋友估計(jì)不在少數(shù),下面這篇文章主要給大家介紹了關(guān)于mysql密碼忘記后如何修改密碼的相關(guān)資料,本教程是2022年最新版詳細(xì)教程保姆級(jí),需要的朋友可以參考下
    2022-04-04
  • mysql語(yǔ)法時(shí)采用了雙引號(hào)““的錯(cuò)誤問(wèn)題

    mysql語(yǔ)法時(shí)采用了雙引號(hào)““的錯(cuò)誤問(wèn)題

    錯(cuò)誤原因:使用雙引號(hào)定義表名和列名導(dǎo)致MySQL報(bào)錯(cuò),應(yīng)使用反引號(hào),修改方案:將雙引號(hào)改為反引號(hào),避免語(yǔ)法沖突,總結(jié):在MySQL中,正確使用反引號(hào)引用標(biāo)識(shí)符,確保SQL語(yǔ)句符合MySQL語(yǔ)法規(guī)則
    2024-10-10
  • mysql中的general_log(查詢?nèi)罩?開(kāi)啟和關(guān)閉

    mysql中的general_log(查詢?nèi)罩?開(kāi)啟和關(guān)閉

    這篇文章主要介紹了mysql中的general_log(查詢?nèi)罩?開(kāi)啟和關(guān)閉問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論

合肥市| 沾化县| 衡阳市| 商河县| 方正县| 宁德市| 蒙阴县| 镇平县| 攀枝花市| 凌源市| 龙南县| 邵阳市| 日照市| 鲁山县| 玉环县| 襄城县| 长兴县| 寿宁县| 杭锦旗| 云林县| 鞍山市| 葵青区| 鄂伦春自治旗| 南充市| 沁阳市| 多伦县| 城步| 平谷区| 贺州市| 苍山县| 阿拉尔市| 搜索| 工布江达县| 临汾市| 蓝田县| 嘉兴市| 历史| 武城县| 永善县| 桑植县| 安国市|