博客 > SQL知識:JOIN連接作用、語法以及示例
瀏覽量:1110次評論:0次
作者:銳成網(wǎng)絡整理時間:2024-07-05 16:47:26
在SQL中,要想提高數(shù)據(jù)庫查詢的速度和效率,JOIN連接是一項必備的技能。本文將深入介紹JOIN連接相關(guān)知識,包括JOIN連接的作用、JOIN類型、語法以及示例等。
JOIN連接的作用
JOIN 連接用于把來自兩個或多個表的行結(jié)合起來,基于這些表之間的共同字段。
最常見的 JOIN 類型:INNER JOIN(簡單的 JOIN)。 INNER JOIN 從多個表中返回滿足 JOIN 條件的所有行。
示例數(shù)據(jù)庫
讓我們看看選自 "Orders" 表的數(shù)據(jù):
然后,看看選自 "Customers" 表的數(shù)據(jù):
請注意,"Orders" 表中的 "客戶ID" 列指向 "Customers" 表中的客戶ID。上面這兩個表是通過 "客戶ID" 列聯(lián)系起來的。
JOIN實例
我們想知道每個訂單ID都是哪些客戶訂購的,以及具體的訂單時間。我們運行下面的 SQL 語句(包含 INNER JOIN):
SELECT o.訂單ID, c.姓名, o.訂單日期
FROM Orders o
INNER JOIN Customers c
ON o.客戶ID=c.客戶ID;
運行結(jié)果如下所示:
不同的 JOIN
在我們繼續(xù)講解實例之前,我們先列出您可以使用的不同的 SQL JOIN 類型:
INNER JOIN
內(nèi)部鏈接INNER JOIN關(guān)鍵字選擇兩個表中具有匹配值的記錄。
SQL INNER JOIN 語法
SELECT column_name(s)FROM table1
INNER JOIN table2 ON
table1.column_name = table2.column_name;
注釋:INNER JOIN 與 JOIN 是相同的,上面的示例就是INNER JOIN
LEFT JOIN
SQL左鏈接LEFT JOIN關(guān)鍵字返回左表(表1)中的所有行,即使在右表(表2)中沒有匹配。如果在正確的表中沒有匹配,結(jié)果是NULL。
SQL LEFT JOIN 語法
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
注釋:在一些數(shù)據(jù)庫中,LEFT JOIN稱為LEFT OUTER JOIN。
LEFT JOIN示例
我們想看看客戶Customers表中的所有用戶是否都有下單,可以使用如下查詢語言:
SELECT c.姓名,o.訂單ID, o.訂單日期
FROM Customers c
LEFT JOIN Orders o
ON o.客戶ID=c.客戶ID;
結(jié)果:
我們發(fā)現(xiàn)劉二,李四,趙七沒有對應的訂單ID和訂單日期,是因為他們沒有在訂單表Orders中存在,沒有匹配上他們的信息。但是由于是左連接,就把主表Customers的信息全部顯示出來了,就是對應上圖的table1。
RIGHT JOIN
SQL右鏈接 RIGHT JOIN 關(guān)鍵字返回右表(table2)的所有行,即使在左表(table1)上沒有匹配。如果左表沒有匹配,則結(jié)果為NULL。
SQL RIGHT JOIN 語法
SELECT column_name(s) FROM table1
RIGHT JOIN table2 ON
table1.column_name = table2.column_name;
注釋:在一些數(shù)據(jù)庫中,RIGHT JOIN 稱為 RIGHT OUTER JOIN。
右連接與左連接的主表剛好相反,會將table2中的數(shù)據(jù)完全顯示,如果table1中沒有匹配上的就不顯示。
FULL OUTER JOIN
當左(表1)或右(表2)表記錄匹配時,F(xiàn)ULL OUTER JOIN關(guān)鍵字將返回所有記錄。
注意: FULL OUTER JOIN可能會返回非常大的結(jié)果集!
SQL FULL OUTER JOIN 語法
SELECT column_name(s) FROM table1
FULL OUTER JOIN table2 ON
table1.column_name = table2.column_name;
全連接就是將table1和table2的內(nèi)容完全顯示,不管有沒有匹配上。
總結(jié)
JOIN在SQL中占有重要的地位,通過JOIN我們可以將有匹配關(guān)系的兩張表或更多表進行關(guān)聯(lián),來獲取我們想要的數(shù)據(jù)。關(guān)聯(lián)的方式也比較靈活,常用的就是INNER JOIN。
重要聲明:本文來自SQL數(shù)據(jù)庫開發(fā),經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有,不代表銳成觀點,轉(zhuǎn)載的目的在于傳遞更多知識和信息。
相關(guān)文章推薦
2025-05-27 11:53:22
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
熱門工具
標簽選擇
閱讀排行
我的評論
還未登錄?點擊登錄