Coursera 笔记

Module 06 · Bonus Module: Advanced SQL for Data Engineers

Join OverviewJOIN 概述

Coursera ↗

欢迎观看本视频,了解 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 来实现。

🔄 多表联接

如果需要合并来自三个或更多不同表的数据,只需将新表添加到联接中。

步骤:

  1. 通过匹配 Borrower ID 联接 borrower 表和 loan 表的信息。
  2. 然后,通过匹配 Copy ID 联接 loan 表和 copy 表的信息。

联接的不同类型

SQL 提供了几种不同类型的 JOIN,您可以选择提取对应于两个表交集的数据集,或者选择一个更大的数据集,甚至选择两个表所有数据的组合。

联接类型 特点
内联接 (Inner Join) 最常见的联接类型。只显示两个表中在通用列(通常是一个表的主键作为另一个表的外键)中匹配的行。
外联接 (Outer Join) 返回匹配的行,甚至返回来自其中一个或两个表的不匹配行。有许多不同变体的外联接可用于优化结果集。

总结回顾

在本视频中,您学到了:

  • 您可以使用 JOIN 运算符来合并来自两个或多个表的行。
  • 被联接的表通过一个通用列相关联,该列通常是一个表的主键,并作为外键出现在另一个表中。
  • 联接主要有两种类型:内联接和外联接。