欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql表的內(nèi)連和外連實(shí)戰(zhàn)記錄

 更新時(shí)間:2024年01月08日 08:40:59   作者:起飛的風(fēng)箏  
在開(kāi)發(fā)中我們的業(yè)務(wù)需求有時(shí)候是復(fù)雜的,多張表聯(lián)合查詢的時(shí)候是有多種方式的,面對(duì)不同的需求,靈活使用不同的表連接方式,這篇文章主要給大家介紹了關(guān)于mysql表內(nèi)連和外連的相關(guān)資料,需要的朋友可以參考下

在MySQL中,內(nèi)連(INNER JOIN)和外連(OUTER JOIN)是用于聯(lián)接多個(gè)表的操作。接下來(lái),我分別給大家介紹下二者。

(一)內(nèi)連接

1、什么叫內(nèi)連接

在MySQL中, 內(nèi)連接 實(shí)際上就是利用 where 子句對(duì)兩種表形成的笛卡兒積進(jìn)行篩選,我們前面學(xué)習(xí)的查詢都是內(nèi)連接,也是在開(kāi)發(fā)過(guò)程中使用的最多的連接查詢。

2、語(yǔ)法格式  

?? 以下是內(nèi)連接的基本語(yǔ)法:

SELECT 列名
FROM 表1
INNER JOIN 表2 ON 表1.關(guān)聯(lián)列 = 表2.關(guān)聯(lián)列;

注:內(nèi)連會(huì)返回同時(shí)存在于表1和表2中的行,并且僅包括滿足關(guān)聯(lián)條件的行。

 3、案例:顯示SMITH的名字和部門名稱(來(lái)自oracle 9i的經(jīng)典測(cè)試表)

之前我們通過(guò)笛卡爾積可以對(duì)其進(jìn)行操作,今天我們通過(guò)內(nèi)連接的方式來(lái)進(jìn)行有關(guān)操作。具體如下:

用前面的寫法

select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno and ename='SMITH';

結(jié)果展示: 

用標(biāo)準(zhǔn)的內(nèi)連接寫法:

select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and
ename='SMITH';

結(jié)果展示:

【小結(jié)】

  • 內(nèi)連接的關(guān)鍵點(diǎn)是只返回兩個(gè)表中連接條件滿足的行,而不包括任何一個(gè)表中沒(méi)有匹配的行;
  • 如果某行在其中一個(gè)表中沒(méi)有匹配的行,則不會(huì)包含在結(jié)果中
  • 需要注意的是,內(nèi)連接并不包括符合條件但值為NULL的行。如果你需要包含這些行,可以使用接下來(lái)講到的外連接

(二)外連接

1、什么叫外連接

在MySQL中,外連接是一種用于檢索兩個(gè)或多個(gè)表之間的數(shù)據(jù)的方法,它包括左外連接、右外連接和全外連接

2、左外連接 左外連

返回左表中的所有行,以及右表中與左表滿足聯(lián)接條件的行;

如果右表中沒(méi)有匹配的行,則返回 NULL 值。

 ?? 語(yǔ)法如下select 字段名 from 表名1 left join 表名2 on 連接條件

2.1案例演示

首先,我先建立兩張表以供實(shí)現(xiàn)需要。具體如下: 表一:

表二:

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

當(dāng)左邊表和右邊表沒(méi)有匹配時(shí),也會(huì)顯示左邊表的數(shù)據(jù):

select * from stu left join exam on stu.id=exam.id;

3、右外連接 右外連

  1. 與左外連相反,返回右表中的所有行,以及左表中與右表滿足聯(lián)接條件的行;
  2. 如果左表中沒(méi)有匹配的行,則返回 NULL 值。

?? 語(yǔ)法如下select 字段名 from 表名1 right join 表名2 on 連接條件

3.1案例演示

需求 :對(duì) stu 表和 exam 表聯(lián)合查詢,把所有的成績(jī)都顯示出來(lái),即使這個(gè)成績(jī)沒(méi)有學(xué)生與它對(duì)應(yīng),也要 顯示出來(lái)
select * from stu right join exam on stu.id=exam.id;

4、全外連接

  • 全外連返回左表和右表中的所有行,并將它們聯(lián)接在一起;
  • 如果某個(gè)表中沒(méi)有匹配的行,則返回 NULL 值;
  • MySQL不直接支持全外連,可以使用UNION操作符來(lái)模擬實(shí)現(xiàn)。

5、練習(xí)演示

需求 :列出部門名稱和這些部門的員工信息,同時(shí)列出沒(méi)有員工的部門

現(xiàn)在有這樣的場(chǎng)景,一家公司為了業(yè)務(wù)架構(gòu)的完整設(shè)置了某個(gè)部門,但是暫時(shí)這個(gè)部門還沒(méi)有人,隨著之后公司的發(fā)展這個(gè)部門才會(huì)發(fā)揮作用。

方法展示:

 代碼展示:

select dname,ename,dept.deptno from dept left join emp on dept.deptno=emp.deptno order by dept.deptno asc;

輸出顯示: 

(三)實(shí)戰(zhàn)OJ

大家看完上訴可以通過(guò)下面這兩道題目練練手:

(四)總結(jié)

通過(guò)內(nèi)連和外連操作,可以根據(jù)表之間的關(guān)聯(lián)條件將數(shù)據(jù)聯(lián)接起來(lái),并進(jìn)行靈活的查詢和分析。具體選擇哪種聯(lián)接類型取決于你的需求和數(shù)據(jù)結(jié)構(gòu)。

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

相關(guān)文章

  • MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步的代碼詳解

    MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步的代碼詳解

    在數(shù)據(jù)庫(kù)應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行某些操作,并在操作完成后進(jìn)行相應(yīng)的處理,這時(shí)候,可以使用觸發(fā)器來(lái)實(shí)現(xiàn)這些功能,MySQL提供了強(qiáng)大的觸發(fā)器功能,本文將給大家詳細(xì)介紹MySQL觸發(fā)器實(shí)現(xiàn)兩表數(shù)據(jù)同步,需要的朋友可以參考下
    2023-12-12
  • MySQL5.7.24版本的數(shù)據(jù)庫(kù)安裝過(guò)程圖文詳解

    MySQL5.7.24版本的數(shù)據(jù)庫(kù)安裝過(guò)程圖文詳解

    這篇文章主要介紹了MySQL5.7.24版本的數(shù)據(jù)庫(kù)安裝過(guò)程,需要的朋友可以參考下
    2018-11-11
  • MySQL最左匹配原則深入分析

    MySQL最左匹配原則深入分析

    首先回顧一下什么是最左匹配(也有稱之為最左前綴)?顧名思義:最左優(yōu)先,以最左邊的為起點(diǎn)任何連續(xù)的索引都能匹配上。同時(shí)遇到范圍查詢(>、<、between、like)就會(huì)停止匹配
    2022-11-11
  • MySQL Replace INTO的使用

    MySQL Replace INTO的使用

    今天DST里面有個(gè)插件作者問(wèn)我關(guān)于Replace INTO和INSERT INTO的區(qū)別,我和他說(shuō)晚上上我的blog看吧,那時(shí)候還在忙,現(xiàn)在從MYSQL手冊(cè)里找了點(diǎn)東西,MYSQL手冊(cè)里說(shuō)REPLACE INTO說(shuō)的還是比較詳細(xì)的.
    2008-04-04
  • MySQL嵌套查詢實(shí)現(xiàn)子查詢的方法

    MySQL嵌套查詢實(shí)現(xiàn)子查詢的方法

    本文主要介紹了MySQL嵌套查詢實(shí)現(xiàn)子查詢的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • mysql存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例

    mysql存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例

    使用MYSQL存儲(chǔ)過(guò)程,可以實(shí)現(xiàn)諸多的功能,下面將為您介紹一個(gè)MYSQL存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例
    2014-01-01
  • mysql where中如何判斷不為空的實(shí)現(xiàn)

    mysql where中如何判斷不為空的實(shí)現(xiàn)

    本文主要介紹了mysql where中如何判斷不為空的實(shí)現(xiàn),本文將針對(duì)這些空演示如何判斷是否為空,以及如何寫sql過(guò)濾,包括使用判空函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • mysql 的load data infile

    mysql 的load data infile

    前些日子在開(kāi)發(fā)一個(gè)輿情監(jiān)測(cè)系統(tǒng),需要在一個(gè)操作過(guò)程中往數(shù)據(jù)表里插入大量的數(shù)據(jù),為了改變以往生硬地逐條數(shù)據(jù)插入的笨辦法,也為了提高執(zhí)行效率,決定用load data infile來(lái)執(zhí)行數(shù)據(jù)插入。
    2009-05-05
  • MySQL查看和修改時(shí)區(qū)的方法

    MySQL查看和修改時(shí)區(qū)的方法

    這篇文章主要給大家介紹了關(guān)于MySQL查看和修改時(shí)區(qū)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • mysql查找字符串函數(shù)的使用

    mysql查找字符串函數(shù)的使用

    這篇文章主要介紹了mysql查找字符串函數(shù)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論