SQL 连接表

在本教程中,你将学习如何连接两个表以获取组合数据。

SQL Join Fundamentals

到目前为止,你看到的所有查询都集中在一个表上。但在现实生活中,你经常需要及时查询两个或更多表,并带来一个组合结果集。这在技术上被称为连接,因为它涉及基于它们之间的公共字段(外键)来连接不同的表以创建数据的新视图。

为了便于理解,让我们看看以下 employeesdepartments 表。这里,employees 表的 dept_id 列是 departments 表的外键。因此,可以连接这两个表以获取组合数据。 ** **

Table: employees

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

Table: departments

+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+

注意: 为了连接表,用于连接表的列的数据应该匹配,而不一定是列名。

连接类型

连接表时,在查询中创建的连接类型会影响结果集中显示的行。你可以创建以下类型的连接:

内部联接

一个连接,仅返回两个连接表中具有匹配项的行。例如,你可以加入 employeesdepartments 表以创建显示每个员工的部门名称的结果集。在内部联接中,没有部门信息的员工不包括在结果集中,也不包括没有员工的部门。

我们将在下一章中详细了解内连接

外联接

外连接是内连接的扩展。外连接返回行,即使它们在连接表中没有相关行。外连接有三种类型:左外连接(或左连接),右外连接(或右连接)和全外连接(或完全连接)。

我们将在后面的章节中详细了解外连接的这些变体。

交叉连接

交叉连接是没有连接条件的连接。一个表的每一行与另一个表的每一行组合。这种类型的结果集称为笛卡尔积或交叉积。例如,employeesdepartments 表之间的交叉联接会生成一个结果集,每个可能的 employees/departments 组合都有一行。

我们将在后续章节中详细了解交叉连接