SQL 程式札記 : 連接(JOIN)

更新於 發佈於 閱讀時間約 4 分鐘

本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。

連接(JOIN)的基本概念

連接(JOIN)是用於結合多個資料表的數據,它根據資料表間欄位的關聯性創建一個暫時性的組合表,方便複雜查詢,同時保持原表結構不變。連接(JOIN)的核心在於匹配多表的共同欄位來合併數據。

不同類型的連接(JOIN)

創建測試用資料

/*創建和插入數據到員工表 (Employees)*/
CREATE TABLE Employees (
EmployeeID int,
Name varchar(50),
DepartmentID int
);

INSERT INTO Employees (EmployeeID, Name, DepartmentID) VALUES (1, '張三', 101);
INSERT INTO Employees (EmployeeID, Name, DepartmentID) VALUES (2, '李四', 102);
INSERT INTO Employees (EmployeeID, Name, DepartmentID) VALUES (3, '王五', 103);
INSERT INTO Employees (EmployeeID, Name, DepartmentID) VALUES (4, '趙六', NULL);

/*創建和插入數據到部門表 (Departments)*/
CREATE TABLE Departments (
DepartmentID int,
DepartmentName varchar(50)
);

INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (101, '人事部');
INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (102, '財務部');
INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (104, '市場部');
', NULL);

INNER JOIN(內連接)

INNER JOIN(內連接)是一種基於等值條件的連接方式,它要求明確指定連接條件。在查詢結果中,只有那些滿足這些等值連接條件的資料行才會被返回。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:只顯示員工表和部門表中匹配的行(張三、李四)。*/

LEFT JOIN(左外連接)

LEFT JOIN(左外連接),它確保左側資料表中的所有記錄都被包含在查詢結果裡,即便右側資料表在連接欄位上沒有匹配的記錄也不例外。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:顯示所有員工,包括沒有對應部門的員工(張三、李四、王五、趙六)。*/

RIGHT JOIN(右外連接)

RIGHT JOIN(右外連接),它保證了右側資料表(table_name2)的所有記錄都出現在查詢結果中,即使左側資料表(table_name1)在連接欄位上沒有對應的匹配記錄也不影響。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:顯示所有部門,包括沒有員工的部門(人事部、財務部、市場部)。*/

😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊

❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡

avatar-img
60會員
91內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
梧笙の領域展開 的其他內容
本文將介紹 SQL 中的 ON DELETE, ON DELETE 是用於管理資料庫中的外鍵約束和相關資料的刪除行為。接下來將教你如何使用 ON DELETE 來保持資料的一致性和完整性。
本文重點介紹 SQL 中的聯集(UNION),聯集(UNION)用於合併來自不同查詢的結果集,接下來將透過範例程式碼來讓你了解聯集(UNION)的用法和特性。
本文將介紹 SQL 中的萬用字元(Wildcard),萬用字元在 SQL 查詢中扮演著關鍵角色,特別是當我們需要對數據進行模糊查找時,接下來會透過範例程式碼來解釋如何使用這些萬用字元。
本文將介紹 SQL 中的聚合函數(Aggregate Functions),聚合函數(Aggregate Functions)對於進行數據分析來說非常重要,接下來將透過範例程式碼來說明聚合函數(Aggregate Functions)的應用。
本文將介紹幾種常見的 SQL 約束,包括主鍵(PRIMARY KEY)、外鍵(FOREIGN KEY)、唯一(UNIQUE)、非空(NOT NULL)和檢查(CHECK)約束,接下來將透過範例程式碼來帶你了解這些約束的使用方式。
本文將介紹如何使用 SQL 的 CREATE TABLE 指令來創建資料表,接下來將透過範例程式碼,帶你從基本語法開始了解 CREATE TABLE。
本文將介紹 SQL 中的 ON DELETE, ON DELETE 是用於管理資料庫中的外鍵約束和相關資料的刪除行為。接下來將教你如何使用 ON DELETE 來保持資料的一致性和完整性。
本文重點介紹 SQL 中的聯集(UNION),聯集(UNION)用於合併來自不同查詢的結果集,接下來將透過範例程式碼來讓你了解聯集(UNION)的用法和特性。
本文將介紹 SQL 中的萬用字元(Wildcard),萬用字元在 SQL 查詢中扮演著關鍵角色,特別是當我們需要對數據進行模糊查找時,接下來會透過範例程式碼來解釋如何使用這些萬用字元。
本文將介紹 SQL 中的聚合函數(Aggregate Functions),聚合函數(Aggregate Functions)對於進行數據分析來說非常重要,接下來將透過範例程式碼來說明聚合函數(Aggregate Functions)的應用。
本文將介紹幾種常見的 SQL 約束,包括主鍵(PRIMARY KEY)、外鍵(FOREIGN KEY)、唯一(UNIQUE)、非空(NOT NULL)和檢查(CHECK)約束,接下來將透過範例程式碼來帶你了解這些約束的使用方式。
本文將介紹如何使用 SQL 的 CREATE TABLE 指令來創建資料表,接下來將透過範例程式碼,帶你從基本語法開始了解 CREATE TABLE。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
Thumbnail
OVER() 子句是Window Function的核心組成部分,用於在查詢結果集中定義一個「窗口」,使聚合函數或排名函數能夠在不改變原始數據結構的情況下,對特定資料進行計算。常搭配PARTITION BY將數據劃分成多個分群(類似GROUP BY,但不改變資料的結構、粒度),
Thumbnail
取近玩起Linux,想著安裝熟悉的SQL Server來玩玩,如果被Ubuntu的自動更新及版本間的差異搞了好久才裝好,本著分享技術的精神,把安裝及更新的過程做個全記錄。
Thumbnail
ABC 分析 ABC分析(ABC Analysis)是一種基於80/20的分類原則,常用於庫存管理、供應鏈分析和資源分配中。它將產品或項目按其相對重要性分為A、B 和 C三個類別。其目的是協助企業專注於最重要的項目,以提高效率和降低成本。
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
Thumbnail
OVER() 子句是Window Function的核心組成部分,用於在查詢結果集中定義一個「窗口」,使聚合函數或排名函數能夠在不改變原始數據結構的情況下,對特定資料進行計算。常搭配PARTITION BY將數據劃分成多個分群(類似GROUP BY,但不改變資料的結構、粒度),
Thumbnail
取近玩起Linux,想著安裝熟悉的SQL Server來玩玩,如果被Ubuntu的自動更新及版本間的差異搞了好久才裝好,本著分享技術的精神,把安裝及更新的過程做個全記錄。
Thumbnail
ABC 分析 ABC分析(ABC Analysis)是一種基於80/20的分類原則,常用於庫存管理、供應鏈分析和資源分配中。它將產品或項目按其相對重要性分為A、B 和 C三個類別。其目的是協助企業專注於最重要的項目,以提高效率和降低成本。
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫