赞
踩
内连接,又称为等值连接,是最常见的连接类型。它根据两个(或多个)表中具有相同列值的行来创建一个新的结果表。在内连接中,只有通过连接条件匹配的行才会被包含在结果集中。
内连接的基本语法如下:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
假设我们有两个表:employees
和 departments
。
employees
表:
emp_id | emp_name | dept_id |
---|---|---|
1 | John | 1 |
2 | Jane | 1 |
3 | Mark | 2 |
4 | Anna | 2 |
5 | Steve | 3 |
departments
表:
dept_id | dept_name |
---|---|
1 | HR |
2 | IT |
3 | Operations |
使用内连接查询员工及其所属部门:
SELECT employees.emp_name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.dept_id;
结果集:
emp_name | dept_name |
---|---|
John | HR |
Jane | HR |
Mark | IT |
Anna | IT |
Steve | Operations |
外连接用于获取在至少一个表中存在的行,即使在另一个表中没有匹配的行。MySQL支持左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。
左外连接会返回左表(table1)的所有行,以及与之匹配的右表(table2)的行。如果在右表中没有匹配的行,则结果集中将显示NULL值。
左外连接的基本语法如下:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;
使用左外连接查询员工及其所属部门,并显示没有分配部门的员工:
SELECT employees.emp_name, departments.dept_name
FROM employees
LEFT OUTER JOIN departments
ON employees.dept_id = departments.dept_id;
右外连接会返回右表(table2)的所有行,以及与之匹配的左表(table1)的行。如果在左表中没有匹配的行,则结果集中将显示NULL值。
右外连接的基本语法如下:
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name = table2.column_name;
使用右外连接查询所有部门及其员工,包括没有员工的部门:
SELECT employees.emp_name, departments.dept_name
FROM employees
RIGHT OUTER JOIN departments
ON employees.dept_id = departments.dept_id;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。