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

MySQL數(shù)據(jù)庫(kù)表的內(nèi)連接和外連接示例詳解

 更新時(shí)間:2026年05月27日 08:31:24   作者:Halvm?n  
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)表的內(nèi)連接和外連接的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),包括左外連接和右外連接的概念、應(yīng)用場(chǎng)景及語(yǔ)法寫法,需要的朋友可以參考下

之前我們講解MySQL的查詢方法,今天我們來(lái)講解一下內(nèi)連接和外鏈接,話不多說(shuō),現(xiàn)在開始啦,對(duì)了,今天是五一的第一天,祝大家五一快樂(lè)!!

一、連接的本質(zhì)

在關(guān)系型數(shù)據(jù)庫(kù)中,數(shù)據(jù)往往分散在多個(gè)表中。為了在一次查詢中獲取完整的信息,就需要將這些表按照某種規(guī)則“連接”起來(lái)。連接的底層是笛卡爾積:即讓表A的每一行和表B的每一行兩兩組合,形成一張巨大的臨時(shí)表。然后,再通過(guò)連接條件從中篩選出真正有意義的行

二、內(nèi)連接

內(nèi)連接是最常用的連接方式,它只返回兩個(gè)表中完全滿足連接條件的行。不匹配的行會(huì)被直接丟棄。

  • 傳統(tǒng)寫法:在FROM中列出多個(gè)表,用WHERE子句指定連接條件。其實(shí)我們之前寫的等值連接多數(shù)就是內(nèi)連接。

  • 標(biāo)準(zhǔn)寫法:使用INNER JOIN ... ON ...語(yǔ)法,語(yǔ)義更清晰。

特點(diǎn):結(jié)果集中絕不會(huì)出現(xiàn)因不匹配而產(chǎn)生的空值

select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件;

注:前面學(xué)習(xí)的都是內(nèi)連接

例如查詢員工及其部門名,只會(huì)顯示有部門的員工;既沒(méi)有部門的員工,也沒(méi)有員工的部門,都不會(huì)出現(xiàn)

下面是一個(gè)樣例

顯示SMITH的名字和所在部門名稱

三、外連接

外連接會(huì)保留某個(gè)表中的全部記錄,即使它在另一張表中找不到匹配。缺失的字段用NULL填充。外連接分為左外連接和右外連接

為了更好的講解知識(shí)點(diǎn),下面是我們預(yù)先創(chuàng)建的database與tables;

1. 左外連接

使用LEFT JOIN,會(huì)完整顯示左側(cè)表的所有行,右表中無(wú)匹配的列置為NULL。

典型場(chǎng)景:你需要以左表為主體來(lái)查看信息。比如“列出所有學(xué)生,并顯示他們的成績(jī)”。即使某個(gè)學(xué)生從未參加過(guò)考試,他的個(gè)人信息也要保留,成績(jī)部分留空。

例子:查詢所有學(xué)生的成績(jī),如果這個(gè)學(xué)生沒(méi)有成績(jī),也要將學(xué)生的個(gè)人信息顯示出來(lái)

2. 右外連接

使用RIGHT JOIN,會(huì)完整顯示右側(cè)表的所有行,左表無(wú)匹配的列置為NULL。

典型場(chǎng)景:需要以右表為主體。比如“列出所有成績(jī),并顯示對(duì)應(yīng)的學(xué)生信息”。某個(gè)成績(jī)?nèi)绻也坏綄?duì)應(yīng)的學(xué)生(可能學(xué)生記錄已被刪除),成績(jī)記錄依然要呈現(xiàn),學(xué)生信息為空。

例子:對(duì)stu表和exam表聯(lián)合查詢,把所有的成績(jī)都顯示出來(lái),即使這個(gè)成績(jī)沒(méi)有學(xué)生與它對(duì)應(yīng),也要顯示出來(lái)

四、如何選擇左連接還是右連接

實(shí)際上,左連接和右連接在功能上可以互相轉(zhuǎn)換,只需交換表的順序。例如:

  • “列出所有部門和員工,包括沒(méi)有員工的部門”
    可以寫作:部門表 LEFT JOIN 員工表(左表是部門,完整保留)。
    也可以寫作:員工表 RIGHT JOIN 部門表(右表是部門,完整保留)。

開發(fā)建議:通常固定使用LEFT JOIN會(huì)更好理解,把要全量保留的主表放在左邊。

五、總結(jié)

  • 內(nèi)連接:結(jié)果集只包含匹配成功的行,兩表地位平等,無(wú)主次之分。

  • 左外連接:左表為主,左表所有行一定出現(xiàn);右表有就顯示,沒(méi)有就為空。

  • 右外連接:右表為主,右表所有行一定出現(xiàn);左表有就顯示,沒(méi)有就為空。

如果把內(nèi)連接想象成兩個(gè)圓取交集,那么左外連接就像是保留左邊整個(gè)圓,右邊只取與左邊相交的部分,未相交的右半部分留白

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

相關(guān)文章

  • MySQL最新版8.1.0版本部署和新特性詳解

    MySQL最新版8.1.0版本部署和新特性詳解

    MySQL8.1的應(yīng)該來(lái)說(shuō)是8.0版本的bug修復(fù),這是 MySQL 變更發(fā)版模型后的第一個(gè)創(chuàng)新版本,本文給大家介紹了MySQL最新版8.1.0版本部署和新特性,需要的朋友可以參考下
    2023-11-11
  • 詳解MySQL中Order By排序和filesort排序的原理及實(shí)現(xiàn)

    詳解MySQL中Order By排序和filesort排序的原理及實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了MySQL的Order By排序的底層原理與filesort排序,以及排序優(yōu)化手段,文中的示例代碼講解詳細(xì),感興趣的小編可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • mysql數(shù)據(jù)庫(kù)入門第一步之創(chuàng)建表

    mysql數(shù)據(jù)庫(kù)入門第一步之創(chuàng)建表

    關(guān)于mysql介紹網(wǎng)上一搜一大堆,這里就不再介紹了,我之后的mysql文章只講最簡(jiǎn)單基礎(chǔ)的用法,主要是為java程序服務(wù)的.文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下
    2021-05-05
  • Linux下mysql 8.0安裝教程

    Linux下mysql 8.0安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux下mysql 8.0安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mysql制作外鍵出現(xiàn)duplicate?key?name錯(cuò)誤問(wèn)題及解決

    mysql制作外鍵出現(xiàn)duplicate?key?name錯(cuò)誤問(wèn)題及解決

    這篇文章主要介紹了mysql制作外鍵出現(xiàn)duplicate?key?name錯(cuò)誤問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SQL?ALTER?TABLE語(yǔ)句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型

    SQL?ALTER?TABLE語(yǔ)句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型

    這篇文章主要介紹了SQL?ALTER?TABLE語(yǔ)句靈活修改表結(jié)構(gòu)和數(shù)據(jù)類型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SQL數(shù)據(jù)處理之增刪改實(shí)現(xiàn)方式

    SQL數(shù)據(jù)處理之增刪改實(shí)現(xiàn)方式

    本文介紹了SQL中INSERT、UPDATE和DELETE語(yǔ)句的使用方法,包括如何批量添加、修改和刪除數(shù)據(jù),強(qiáng)調(diào)了在插入數(shù)據(jù)時(shí)需要注意字段長(zhǎng)度,以及DML操作默認(rèn)自動(dòng)提交數(shù)據(jù),最后提到可以通過(guò)設(shè)置autocommit為FALSE來(lái)控制提交行為
    2026-05-05
  • mysql百萬(wàn)數(shù)據(jù)表加索引優(yōu)化的方法

    mysql百萬(wàn)數(shù)據(jù)表加索引優(yōu)化的方法

    在大數(shù)據(jù)時(shí)代,隨著數(shù)據(jù)量的快速增長(zhǎng),對(duì)數(shù)據(jù)庫(kù)的索引優(yōu)化變得尤為重要,本文主要介紹了mysql百萬(wàn)數(shù)據(jù)表加索引優(yōu)化的方法,感興趣的可以了解一下
    2024-02-02
  • MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    這個(gè)問(wèn)題是我在學(xué)習(xí)數(shù)據(jù)庫(kù)的時(shí)候遇到的一個(gè)問(wèn)題,我當(dāng)時(shí)并不能理解下圖中的一些情況,后來(lái)我也請(qǐng)教了一位大佬給我解答,最后在大佬和度娘的幫助下我大概理解了這個(gè)反引號(hào)的東西
    2021-10-10
  • MySQL如何對(duì)數(shù)據(jù)進(jìn)行排序圖文詳解

    MySQL如何對(duì)數(shù)據(jù)進(jìn)行排序圖文詳解

    我們知道從MySQL表中使用SQL SELECT語(yǔ)句來(lái)讀取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL如何對(duì)數(shù)據(jù)進(jìn)行排序的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論

类乌齐县| 旌德县| 玛沁县| 盈江县| 中卫市| 柯坪县| 商丘市| 玉林市| 吉隆县| 扶沟县| 瑞安市| 将乐县| 平乐县| 沭阳县| 阜城县| 榆树市| 昆山市| 交城县| 刚察县| 刚察县| 花莲县| 紫阳县| 富民县| 隆林| 平阴县| 定西市| 新乡市| 蕲春县| 凤山市| 长岛县| 莲花县| 什邡市| 武城县| 凤庆县| 新津县| 思茅市| 柳州市| 绍兴县| 桂东县| 本溪市| 阿克苏市|