mysql表的內(nèi)連和外連實戰(zhàn)記錄
在MySQL中,內(nèi)連(INNER JOIN)和外連(OUTER JOIN)是用于聯(lián)接多個表的操作。接下來,我分別給大家介紹下二者。
(一)內(nèi)連接
1、什么叫內(nèi)連接
在MySQL中, 內(nèi)連接 實際上就是利用 where 子句對兩種表形成的笛卡兒積進行篩選,我們前面學(xué)習(xí)的查詢都是內(nèi)連接,也是在開發(fā)過程中使用的最多的連接查詢。
2、語法格式
?? 以下是內(nèi)連接的基本語法:
SELECT 列名
FROM 表1
INNER JOIN 表2 ON 表1.關(guān)聯(lián)列 = 表2.關(guān)聯(lián)列;注:內(nèi)連會返回同時存在于表1和表2中的行,并且僅包括滿足關(guān)聯(lián)條件的行。
3、案例:顯示SMITH的名字和部門名稱(來自oracle 9i的經(jīng)典測試表)
之前我們通過笛卡爾積可以對其進行操作,今天我們通過內(nèi)連接的方式來進行有關(guān)操作。具體如下:
用前面的寫法:
select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno and ename='SMITH';
結(jié)果展示:

用標準的內(nèi)連接寫法:
select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and ename='SMITH';
結(jié)果展示:



【小結(jié)】
- 內(nèi)連接的關(guān)鍵點是只返回兩個表中連接條件滿足的行,而不包括任何一個表中沒有匹配的行;
- 如果某行在其中一個表中沒有匹配的行,則不會包含在結(jié)果中
- 需要注意的是,內(nèi)連接并不包括符合條件但值為NULL的行。如果你需要包含這些行,可以使用接下來講到的外連接
(二)外連接
1、什么叫外連接
在MySQL中,外連接是一種用于檢索兩個或多個表之間的數(shù)據(jù)的方法,它包括左外連接、右外連接和全外連接。
2、左外連接 左外連
返回左表中的所有行,以及右表中與左表滿足聯(lián)接條件的行;
如果右表中沒有匹配的行,則返回 NULL 值。
?? 語法如下:select 字段名 from 表名1 left join 表名2 on 連接條件
2.1案例演示
首先,我先建立兩張表以供實現(xiàn)需要。具體如下: 表一:

表二:

需求: 查詢所有學(xué)生的成績,如果這個學(xué)生沒有成績,也要將學(xué)生的個人信息顯示出來
當左邊表和右邊表沒有匹配時,也會顯示左邊表的數(shù)據(jù):
select * from stu left join exam on stu.id=exam.id;

3、右外連接 右外連
- 與左外連相反,返回右表中的所有行,以及左表中與右表滿足聯(lián)接條件的行;
- 如果左表中沒有匹配的行,則返回 NULL 值。
?? 語法如下:select 字段名 from 表名1 right join 表名2 on 連接條件
3.1案例演示
需求 :對 stu 表和 exam 表聯(lián)合查詢,把所有的成績都顯示出來,即使這個成績沒有學(xué)生與它對應(yīng),也要 顯示出來
select * from stu right join exam on stu.id=exam.id;

4、全外連接
- 全外連返回左表和右表中的所有行,并將它們聯(lián)接在一起;
- 如果某個表中沒有匹配的行,則返回 NULL 值;
- MySQL不直接支持全外連,可以使用UNION操作符來模擬實現(xiàn)。
5、練習(xí)演示
需求 :列出部門名稱和這些部門的員工信息,同時列出沒有員工的部門
現(xiàn)在有這樣的場景,一家公司為了業(yè)務(wù)架構(gòu)的完整設(shè)置了某個部門,但是暫時這個部門還沒有人,隨著之后公司的發(fā)展這個部門才會發(fā)揮作用。

方法展示:
代碼展示:
select dname,ename,dept.deptno from dept left join emp on dept.deptno=emp.deptno order by dept.deptno asc;
輸出顯示:

(三)實戰(zhàn)OJ
大家看完上訴可以通過下面這兩道題目練練手:
(四)總結(jié)
通過內(nèi)連和外連操作,可以根據(jù)表之間的關(guān)聯(lián)條件將數(shù)據(jù)聯(lián)接起來,并進行靈活的查詢和分析。具體選擇哪種聯(lián)接類型取決于你的需求和數(shù)據(jù)結(jié)構(gòu)。
到此這篇關(guān)于mysql表的內(nèi)連和外連的文章就介紹到這了,更多相關(guān)mysql表內(nèi)連和外連內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 數(shù)據(jù)恢復(fù)的多種方法匯總
日常工作中,總會有因手抖、寫錯條件、寫錯表名、錯連生產(chǎn)庫造成的誤刪庫表和數(shù)據(jù)的事情發(fā)生。但是,如果每次刪庫都跑路的話,怕是再也不好找工作了吧!所以,刪庫跑路不是上上策2021-06-06
MYSQL必知必會讀書筆記第五章之排序檢索數(shù)據(jù)
本文給大家分享mysql必會必知讀書筆記第五章之排序檢索數(shù)據(jù),小編認為非常具有參考價值,特此分享到腳本之家平臺供大家參考2016-05-05
解決Mysql收縮事務(wù)日志和日志文件過大無法收縮問題
這篇文章主要介紹了解決Mysql收縮事務(wù)日志和日志文件過大無法收縮問題,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-08-08

