河北建设工程网站成都投资网站建设
SQL 中的不同 JOIN 类型:
1. (INNER)JOIN(内连接):返回两个表中具有匹配值的记录。
2. LEFT(OUTER)JOIN(左外连接):返回左表中的所有记录,以及右表中与之匹配的记录。
3. RIGHT(OUTER)JOIN(右外连接):返回右表中的所有记录,以及左表中与之匹配的记录。
4. FULL(OUTER)JOIN(全外连接):返回在左表或右表中有匹配的所有记录。

现在详细举例说明:
假设我们有两个表 employees 和 departments:
| employee_id | name | department_id | 
|---|---|---|
| 1 | Alice | 1 | 
| 2 | Bob | 2 | 
| 3 | David | NULL | 
employees表
| department_id | department_name | 
| 1 | HR | 
| 2 | Engineering | 
| 3 | Sales | 
departments表
INNER JOIN
SELECT employees.name, departments.department_name  //要查的字段
FROM employees  //表1
INNER JOIN departments ON employees.department_id = departments.department_id;  //表2,连接条件 
结果是
| name | department_name | 
| Alice | HR | 
| Bob | Engineering | 
LEFT (OUTER) JOIN
LEFT JOIN 返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中包含 NULL。
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id; 
结果是
| name | department_name | 
| Alice | HR | 
| Bob | Engineering | 
| David | NULL | 
RIGHT (OUTER) JOIN
RIGHT JOIN 返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中包含 NULL。
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id; 
结果是
| name | department_name | 
| Alice | HR | 
| Bob | Engineering | 
| NULL | Sales | 
FULL (OUTER) JOIN
FULL JOIN 返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。如果没有匹配,则结果中包含 NULL。
SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.department_id; 
 
| name | department_name | 
| Alice | HR | 
| Bob | Engineering | 
| David | NULL | 
| NULL | Sales | 
总结
- INNER JOIN:只返回两个表中匹配的记录。
 
- LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录。
 
- RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录。
 
- FULL JOIN:返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。
 
希望这些示例能帮助你更好地理解 SQL 中的不同 JOIN 类型。
