SQL INNER JOINSQL 删除表(DROP)
SQL 联表查询(Join)
在本教程中,您将学习如何联接两个表以获取组合数据。
SQL连接基础到目前为止,您所看到的所有查询都集中在一个表上。但是在现实生活中,您经常需要一次查询两个或多个表并带来合并的结果集。这在技术上称为联接,因为它涉及根据表之间的公共字段(外键)联接不同的表以创建数据的新视图。
为了容易理解这一点,让我们来看看下面employees和departments表。在这里,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)联接仅返回两个联接表中都具有匹配项的行。例如,您可以将employees和departments表联接在一起,以创建一个显示每个雇员的部门名称的结果集。在内部联接中,没有部门信息的雇员不包括在结果集中,没有雇员的部门也不会包括在结果集中。
在下一章中,我们将学习有关内部联接的更多信息。
外联结(Outer join)外联接是内部联接的扩展。 即使外联接在联接表中没有相关行,外联接也会返回这些行。 外联接共有三种类型:左联接(left join),右联接(right join)和完全联接(full join)。
我们将在后面的章节中详细了解外部联接的这些变体。
交叉联接(Cross join)交叉联接是没有联接条件的联接。一个表的每一行与另一表的每一行合并。这种类型的结果集称为笛卡尔乘积或叉积。例如,employees和departments表之间的交叉连接产生了一个结果集,其中每个可能的雇员/部门组合都有一行。
在接下来的章节中,我们将学习有关交叉连接的更多信息。
SQL INNER JOINSQL 删除表(DROP)