一、MySQL内连接(INNER JOIN)
内连接,又称为等值连接,是最常见的连接类型。它根据两个(或多个)表中具有相同列值的行来创建一个新的结果表。在内连接中,只有通过连接条件匹配的行才会被包含在结果集中。
1.1 基本语法
内连接的基本语法如下:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
1.2 示例
假设我们有两个表:employees
和 departments
。
employees
表:
departments
表:
使用内连接查询员工及其所属部门:
SELECT employees.emp_name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.dept_id;
结果集:
二、MySQL外连接(OUTER JOIN)
外连接用于获取在至少一个表中存在的行,即使在另一个表中没有匹配的行。MySQL支持左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。
2.1 左外连接(LEFT OUTER JOIN)
左外连接会返回左表(table1)的所有行,以及与之匹配的右表(table2)的行。如果在右表中没有匹配的行,则结果集中将显示NULL值。
2.1.1 基本语法
左外连接的基本语法如下:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;
2.1.2 示例
使用左外连接查询员工及其所属部门,并显示没有分配部门的员工:
SELECT employees.emp_name, departments.dept_name
FROM employees
LEFT OUTER JOIN departments
ON employees.dept_id = departments.dept_id;
2.2 右外连接(RIGHT OUTER JOIN)
右外连接会返回右表(table2)的所有行,以及与之匹配的左表(table1)的行。如果在左表中没有匹配的行,则结果集中将显示NULL值。
2.2.1 基本语法
右外连接的基本语法如下:
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name = table2.column_name;
2.2.2 示例
使用右外连接查询所有部门及其员工,包括没有员工的部门:
SELECT employees.emp_name, departments.dept_name
FROM employees
RIGHT OUTER JOIN departments
ON employees.dept_id = departments.dept_id;