
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY,ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION 與 UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 聯接
- SQL - 使用聯接
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除聯接
- SQL - 更新聯接
- SQL - 左連線與右連線
- SQL - Union 與 Join
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By 與 Order By
- SQL - IN 與 EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 聯接
SQL Join 子句
SQL 的Join 子句用於組合資料庫中兩個或多個表中的資料。當相關資料儲存在多個表中時,聯接可幫助您使用其外部索引鍵檢索組合這些表中的欄位的記錄。
Join 子句中指定兩個或多個表中記錄聯接的列的部分稱為聯接謂詞。此謂詞通常與 ON 子句一起指定,並使用各種比較運算子,例如 <、>、<>、<=、>=、!=、BETWEEN、LIKE 和 NOT 等。我們還可以使用邏輯運算子 AND、OR 和 NOT 連線多個聯接謂詞。
我們可以將 JOIN 與更新 和刪除 SQL 查詢一起使用,以更新和刪除多個表中的記錄。當您使用聯接檢索表時,顯示的結果表不會儲存在資料庫中的任何位置。
語法
以下是 SQL JOIN CLAUSE 的基本語法:
SELECT column_name(s) FROM table1 JOIN table2;
示例
假設我們使用以下查詢建立了一個包含組織客戶詳細資訊的 CUSTOMERS 表:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,使用 INSERT 語句將值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
將建立如下所示的 CUSTOMERS 表:
ID | 姓名 | 年齡 | 地址 | 薪資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
以下是另一個 ORDERS 表,其中包含客戶的訂單詳細資訊。
CREATE TABLE ORDERS ( OID INT NOT NULL, DATE VARCHAR (20) NOT NULL, CUSTOMER_ID INT NOT NULL, AMOUNT DECIMAL (18, 2) );
使用 INSERT 語句,將值插入此表,如下所示:
INSERT INTO ORDERS VALUES (102, '2009-10-08 00:00:00', 3, 3000.00), (100, '2009-10-08 00:00:00', 3, 1500.00), (101, '2009-11-20 00:00:00', 2, 1560.00), (103, '2008-05-20 00:00:00', 4, 2060.00);
將建立如下所示的 ORDERS 表:
OID | 日期 | 客戶ID | 金額 |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |
103 | 2008-05-20 00:00:00 | 4 | 2060.00 |
以下查詢對錶 CUSTMERS 和 ORDERS 執行聯接操作:
SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
輸出
透過執行上述查詢,將顯示結果表,其中包含 CUSTOMERS 表中 ID、NAME、AGE 欄位以及 ORDERS 表中 AMOUNT 欄位的值。
ID | 姓名 | 年齡 | 金額 |
---|---|---|---|
3 | Kaushik | 23 | 3000 |
3 | Kaushik | 23 | 1500 |
2 | Khilan | 25 | 1560 |
4 | Chaitali | 25 | 2060 |
SQL 中的聯接型別
SQL 提供了各種型別的聯接,這些聯接根據跨多個表聯接資料的方式進行分類。它們列出如下:
內連線
一個INNER JOIN 是預設聯接,它檢索兩個表的交集。它將第一個表的每一行與第二個表的每一行進行比較。如果這些行的對滿足聯接謂詞,則將它們連線在一起。
外連線
與內連線不同,外連線檢索兩個表中的所有記錄,即使一個表中沒有另一個表的對應行。外聯接進一步分為三種子型別 - 左聯接、右聯接和全聯接。
以下是不同型別的外部聯接:
LEFT JOIN - 即使右表中沒有匹配項,也返回左表中的所有行。
RIGHT JOIN - 即使左表中沒有匹配項,也返回右表中的所有行。
FULL JOIN - 當其中一個表中有匹配項時返回行。
其他聯接
除此之外,還有另外兩個聯接:
SELF JOIN - 用於將表本身聯接起來,就好像該表是兩個表一樣,在 SQL 語句中臨時重新命名至少一個表。
CROSS Join - 返回兩個或多個聯接表中記錄集的笛卡爾積。