Module 06 · Bonus Module: Advanced SQL for Data Engineers
Join OverviewJOIN 概述
欢迎观看本视频,了解 JOIN 联接 运算符的概述。
看完本视频后,您将能够:
- 定义联接(JOIN)运算符。
- 解释主键 (Primary Key) 和外键 (Foreign Key) 在联接操作中的作用。
- 列出不同类型的联接运算符。
联接 (JOIN) 运算符的定义
简单的 SELECT 语句从单个表中检索一行或多行的数据。更高一级的复杂性在于从两个或多个表中检索数据。
- 联接 (JOIN) 运算符用于合并来自两个或多个表中的行,它基于这些表中某些列之间的关系。
- 当您需要合并数据时,就需要使用 JOIN 运算符。
📚 示例:简化图书馆数据库
在这个简化的图书馆数据库示例中,像作者 (author) 和书籍 (book) 都是实体。信息被拆分到不同的表中(例如 borrower、loan、copy 等)。如果您想知道哪个借阅者借出了哪本特定的书,您需要从 borrower、loan 和 copy 三个表中收集数据。这就是需要使用 JOIN 运算符的时候。
主键和外键的作用
要执行联接操作,首先需要识别表之间的关系,即用作表之间链接的列。
1. 主键 (Primary Key, PK)
- 主键(在实体关系图 (ERD) 中通常带有钥匙图标 🔑)是唯一标识表中每一行的列。
- 在示例中,Author ID、Book ID、Borrower ID 和 Copy ID 都有主键图标。
2. 外键 (Foreign Key, FK)
- 外键(在 ERD 中通常标记有 (FK))是一组列,它们引用另一个实体的主键。
- 例如:在 loan (借阅) 实体中,
Borrower ID属性带有 (FK) 标记。这表示Borrower ID是loan实体中的外键,它引用了borrower实体中的主键。 - 因此,如果您想知道哪个借阅者借出了一本书,您需要结合 borrower 和 loan 表中的数据,通过匹配两个表中的 Borrower ID 来实现。
🔄 多表联接
如果需要合并来自三个或更多不同表的数据,只需将新表添加到联接中。
步骤:
- 通过匹配 Borrower ID 联接 borrower 表和 loan 表的信息。
- 然后,通过匹配 Copy ID 联接 loan 表和 copy 表的信息。
联接的不同类型
SQL 提供了几种不同类型的 JOIN,您可以选择提取对应于两个表交集的数据集,或者选择一个更大的数据集,甚至选择两个表所有数据的组合。
| 联接类型 | 特点 |
|---|---|
| 内联接 (Inner Join) | 最常见的联接类型。只显示两个表中在通用列(通常是一个表的主键作为另一个表的外键)中匹配的行。 |
| 外联接 (Outer Join) | 返回匹配的行,甚至返回来自其中一个或两个表的不匹配行。有许多不同变体的外联接可用于优化结果集。 |
总结回顾
在本视频中,您学到了:
- 您可以使用 JOIN 运算符来合并来自两个或多个表的行。
- 被联接的表通过一个通用列相关联,该列通常是一个表的主键,并作为外键出现在另一个表中。
- 联接主要有两种类型:内联接和外联接。