tft每日頭條

 > 生活

 > sql中join與left join的區别

sql中join與left join的區别

生活 更新时间:2025-01-08 22:17:53

大家好,我是甯一。

今天講解SQL教程第11課:INNER JOIN 内連接。

前面的課程我們主要講了SQL的基本語法,隻涉及到單張表的增删改查。

但在實際業務中,往往需要多張表聯合查詢,這個就是我們接下來幾節課的主要内容。

1、JOIN連接

多張數據表聯合查詢,需要用到JOIN連接,JOIN連接分為好幾種,先來簡單介紹一下,看不懂也沒關系,後面課程我們會舉實例介紹的。

INNER JOIN:内連接,也可以隻寫JOIN。隻有進行連接的兩個表中,都存在與連接标準相匹配的數據才會被保留下來,相當于兩個表的交集。如果前後連接同一張表,也叫自連接。

LEFT JOIN: 左連接,也稱左外連接。操作符左邊表中符合 WHERE 子句的所有記錄将會被返回,操作符右邊表中如果沒有符合 ON 後面連接條件的記錄時,那麼從右邊表指定選擇的列的值将會是 NULL。

RIGHT JOIN: 右連接,也稱右外連接。會返回右邊表所有符合 WHERE 語句的記錄。左表中匹配不上的宇段值用 NULL 代替。

FULL JOIN:全連接,返回所有表中符合 WHERE 語句條件的所有記錄。如果任一表的指定宇段沒有符合條件的值的話,那麼就使用 NULL 替代。

sql中join與left join的區别(一文講懂SQL内連接INNER)1

2、INNER JOIN 内連接

JOIN 語句就是告訴SQL,我們應該将哪幾張表通過哪幾個列連接起來。INNER JOIN 可以省略掉INNER直接寫成JOIN,是一個意思。

基本語法:

SELECT <字段名> FROM <表a> JOIN <表b> ON a.<字段名> = b.<字段名> ;

實例:将Students學生表和Teachers教師表通過教師編号Tid連接起來。

sql中join與left join的區别(一文講懂SQL内連接INNER)2

sql中join與left join的區别(一文講懂SQL内連接INNER)3

SELECT * FROM Students AS s JOIN Teachers AS t ON s.Tid = t.Tid

sql中join與left join的區别(一文講懂SQL内連接INNER)4

查看輸出的結果,我們可以發現,FROM後面的Students表會作為基礎表放在前面,後面在根據關聯列Tid,拼接上JOIN後面的Teachers表。

如果兩個表調換一下位置,會輸出什麼樣的結果呢?我們來看看。

SELECT * FROM Teachers AS t JOIN Students AS s ON t.Tid = s.Tid

sql中join與left join的區别(一文講懂SQL内連接INNER)5

可以看到,Teachers表會作為基礎表放在前面。

但是Teachers表中,老師有張三、李四、王五 3人,現在隻輸出了張三、李四 2人,這是因為王五沒有對應的學生。

内連接,隻有輸出兩個表中相互匹配的數據,相當于兩個表的交集。

JOIN…ON 後面也可以跟多個連接條件,條件之間用AND連接就可以了。

3、多表内連接

JOIN不僅僅可以連接兩個表,3個表,4個表都可以,真實業務中,連接十幾個表也是常有的事。

基本語法:

SELECT <字段名> FROM <表a> JOIN <表b> ON a.<字段名> = b.<字段名> JOIN <表C> ON a.<字段名> = c.<字段名>

實例:Students學生表同時連接Teachers教師表和Courses課程表,通過教師字段Tid連接。

sql中join與left join的區别(一文講懂SQL内連接INNER)6

SELECT * FROM Students AS s JOIN Teachers AS t ON s.Tid = t.Tid JOIN Courses AS c ON s.Tid = c.Tid

sql中join與left join的區别(一文講懂SQL内連接INNER)7

4、USING關鍵字

當JOIN…ON後面作為合并條件的列名,在兩個表中相同時,可以用USING (……, ……) 取代 ON …… AND ……。

如果列名不一樣,不能用USING關鍵字簡化。這個知識點大家了解就好了,看到USING能知道是什麼意思。

比如:

JOIN Teachers AS t ON s.Tid = t.Tid AND s.Sname = t.Sname

可以簡化成:

JOIN Teachers AS t USING (Tid,Sname)

5、自連接

表格不僅可以跟其他表進行連接,也可以跟自己連接,就叫自連接。

我們舉個非常經典的實例,作為我們的作業。

這個題是大廠經常出的連續登錄問題,其中一種解法就是用的自連接。

作業:編寫一個 SQL 查詢,查找所有至少連續出現三次的數字,表名為:Num,表結構如下:

sql中join與left join的區别(一文講懂SQL内連接INNER)8

作業解析:通過id 1的方式查找id下一次出現的數字,通過id 2的方式查找下下次出現的數字,隻要下一次及下下次出現的數字和當前出現的數字相同,即為滿足連續出現至少三次的數字。

SELECT DISTINCT a.num FROM Num a JOIN Num b ON a.id 1 = b.id JOIN Num c ON a.id 2 = c.id where a.num = b.num AND a.num = c.num

sql中join與left join的區别(一文講懂SQL内連接INNER)9

下節課,我們來講講OUTER JOIN外連接。

點擊關注,更新課程第一時間通知哦~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved