SQL 基础教程
SQL 连接
SQL 高级教程
SQL 参考资料

SQL JOIN 连接表

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

SQL 连接基础知识

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

为了容易理解这一点,让我们看一下下面的 employeesdepartments 表。 这里,employees 表的 dept_id 列是 departments 表的外键。 因此,可以将这两个表连接起来得到组合数据。

+--------+--------------+------------+---------+
| 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 |
+--------+--------------+------------+---------+
 
+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+
表: employees 表: departments

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

连接类型

联接表时,您在查询中创建的联接类型会影响结果集中出现的行。 您可以创建以下类型的联接:

Inner join(内部联接)

仅返回在两个连接表中都匹配的行的连接。 例如,您可以连接 employeesdepartments 表以创建显示每个员工的部门名称的结果集。 在内连接中,没有部门信息的员工不包含在结果集中,没有员工的部门也不包含在结果集中。

我们将在下一章了解更多关于 inner join 的内容。

Outer join(外部连接)

外连接是内连接的扩展。 即使在联接表中没有相关行,外部联接也会返回这些行。 外连接分为三种类型:左外连接 ( left join)、右外连接 ( right join) 和全外连接 ( full join)。

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

cross join(交叉连接)

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

我们将在接下来的章节中了解更多关于 cross join 交叉连接的内容。

Advertisements