在SQL Server中,连接(JOIN)操作用于从两个或多个表中检索相关数据。内连接、左连接、右连接和全连接是最常用的几种连接类型。下面详细介绍每种连接的用法和区别:
1. 内连接 (INNER JOIN)
内连接只返回两个表中满足连接条件的匹配行。如果某一行在其中一个表中没有匹配项,则该行不会出现在结果集中。
sqlCopy Code
SELECT A.列名, B.列名 FROM 表A A INNER JOIN 表B B ON A.共同列 = B.共同列; 
2. 左连接 (LEFT JOIN 或 LEFT OUTER JOIN)
左连接会返回左表中的所有行以及右表中满足连接条件的匹配行。即使右表中没有匹配项,左表的行也会包括在结果集中,未匹配的右表列会显示为NULL。
sqlCopy Code
SELECT A.列名, B.列名 FROM 表A A LEFT JOIN 表B B ON A.共同列 = B.共同列; 
3. 右连接 (RIGHT JOIN 或 RIGHT OUTER JOIN)
右连接返回右表中的所有行以及左表中满足连接条件的匹配行。即使左表中没有匹配项,右表的行也会包括在结果集中,未匹配的左表列会显示为NULL。
sqlCopy Code
SELECT A.列名, B.列名 FROM 表A A RIGHT JOIN 表B B ON A.共同列 = B.共同列; 
4. 全连接 (FULL JOIN 或 FULL OUTER JOIN)
全连接返回两个表中的所有行。不论在另一表中是否有匹配项,两表的所有行都会包含在结果集中。未匹配的列会显示为NULL。
sqlCopy Code
SELECT A.列名, B.列名 FROM 表A A FULL JOIN 表B B ON A.共同列 = B.共同列; 
示例说明
假设有两个表:Employees 和 Departments。
Employees:
| EmployeeID | EmployeeName | DepartmentID | 
|---|---|---|
| 1 | Alice | 10 | 
| 2 | Bob | 20 | 
| 3 | Charlie | 30 | 
Departments:
| DepartmentID | DepartmentName | 
|---|---|
| 10 | HR | 
| 20 | IT | 
| 40 | Admin | 
内连接示例:
sqlCopy Code
SELECT Employees.EmployeeName, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; 
结果:
| EmployeeName | DepartmentName | 
|---|---|
| Alice | HR | 
| Bob | IT | 
左连接示例:
sqlCopy Code
SELECT Employees.EmployeeName, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; 
结果:
| EmployeeName | DepartmentName | 
|---|---|
| Alice | HR | 
| Bob | IT | 
| Charlie | NULL | 
右连接示例:
sqlCopy Code
SELECT Employees.EmployeeName, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; 
结果:
| EmployeeName | DepartmentName | 
|---|---|
| Alice | HR | 
| Bob | IT | 
| NULL | Admin | 
全连接示例:
sqlCopy Code
SELECT Employees.EmployeeName, Departments.DepartmentName FROM Employees FULL JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; 
结果:
| EmployeeName | DepartmentName | 
|---|---|
| Alice | HR | 
| Bob | IT | 
| Charlie | NULL | 
| NULL | Admin | 
这些示例展示了不同类型连接的行为和返回结果。根据具体需求选择合适的连接类型,可以有效地从数据库中获取所需的信息。