本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。
連接(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(內連接)是一種基於等值條件的連接方式,它要求明確指定連接條件。在查詢結果中,只有那些滿足這些等值連接條件的資料行才會被返回。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:只顯示員工表和部門表中匹配的行(張三、李四)。*/
LEFT JOIN(左外連接),它確保左側資料表中的所有記錄都被包含在查詢結果裡,即便右側資料表在連接欄位上沒有匹配的記錄也不例外。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:顯示所有員工,包括沒有對應部門的員工(張三、李四、王五、趙六)。*/
RIGHT JOIN(右外連接),它保證了右側資料表(table_name2)的所有記錄都出現在查詢結果中,即使左側資料表(table_name1)在連接欄位上沒有對應的匹配記錄也不影響。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
/* 結果:顯示所有部門,包括沒有員工的部門(人事部、財務部、市場部)。*/
😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊