PostgreSQL JOIN2025年3月17日 | 阅读 7 分钟 在本节中,我们将简要了解各种类型的 PostgreSQL 连接的运作方式,例如内连接、左连接、右连接和全外连接。 PostgreSQL JOINs 与 SELECT 命令一起使用,帮助我们从各种表中检索数据。我们可以将 Select 和 Joins 语句合并到一个命令中。每当我们想从两个或更多表中获取记录时,我们都会执行连接命令。 它用于根据连接表之间标准列的数据,合并一个或多个表中的列。通常,第一个表的标准列是主键列,而第二个表的列是外键列。 在 PostgreSQL 中,我们有各种类型的连接,如下所示 下图显示了本 PostgreSQL 教程部分将解释的最常用的 PostgreSQL 连接。 ![]() PostgreSQL 连接示例让我们看一些不同类型的 PostgreSQL 连接的示例 在这里,我们将创建并插入两个不同的表,在这些表中我们将对几种类型的连接执行操作 在下面的示例中,我们将使用 Create 命令创建一个 Luxury_cars 表。 输出 执行上述命令后,我们将收到以下消息,显示 Luxury_cars 表已成功创建。 ![]() 在这里,我们将再次使用 Create 命令创建一个 Sports_cars 表,如下所示 输出 执行上述命令后,我们将收到以下消息,显示 Sports_cars 表已成功创建。 ![]() 之后,我们将使用 INSERT 命令在 Luxury_cars 表中插入一些值 输出 执行上述命令后,我们将收到以下消息,表示值已成功插入到 Luxury_cars 表中。 ![]() 就像我们插入 Luxury_cars 表中的值一样,我们也将借助 Insert 命令将值插入到 Sports_cars 表中 输出 执行上述命令后,我们将收到以下消息,表示值已成功插入到 Sports_cars 表中。 ![]() 上述表有一些相似的汽车,例如 Chevrolet Corvette 和 Mercedes Benz SL Class。 现在我们将使用 SELECT 命令从 Luxury_cars 表中获取以下数据 输出 在执行上述命令后,我们将获得以下输出 ![]() 我们将使用 SELECT 命令从 Sports_cars 表中获取以下数据 输出 执行上述命令后,我们将获得以下结果 ![]() 现在,让我们实时查看不同类型的 PostgreSQL Join 的工作原理 PostgreSQL 内连接PostgreSQL INNER JOIN 用于返回各种表中满足连接条件的所有行。 PostgreSQL 内连接的语法 下面的可视化表示显示了 PostgreSQL 内连接的工作原理 ![]() 例如 我们将以上表(Luxury_cars 和 Sports_cars)为例来理解 PostgreSQL 内连接。 以下命令将通过匹配 luxury_car_name 和 sports_car_name 列中的值来连接第一个表 (Luxury_cars) 和第二个表 (Sports_cars) 输出 一旦我们执行了上述命令,我们将得到以下结果,其中我们可以看到来自 Luxury_cars 和 Sports_cars 表的匹配行数据。 ![]()
PostgreSQL 左连接PostgreSQL LEFT JOIN 用于返回左表(可在 ON 条件中定义)中的所有行,以及仅当连接条件满足时,从另一个表中返回的行。 PostgreSQL 左连接的语法 下面的可视化表示显示了 PostgreSQL 左连接的工作原理 ![]() 例如 在下面的命令中,我们将使用左连接条件连接 Luxury_cars 表和 Sports_cars 表。 在左连接子句中,表 A 或第一个表称为左表,表 B 或第二个表称为右表。 输出 一旦我们执行了上述命令,我们将得到以下结果。 ![]() PostgreSQL 左连接的工作原理
带 Where 子句的 PostgreSQL 左连接我们还可以将左连接与 WHERE 条件一起使用。在下面的示例中,我们将从左表 (Luxury_cars) 中选择不包含右表 (Sports_cars) 中相似行的行 输出 一旦我们执行了上述命令,我们将得到以下输出,显示 S_ID 为 NULL 的记录。 ![]() 注意:我们可以等效地使用 LEFT JOIN 和 LEFT OUTER JOIN,因为左连接和左外连接的工作方式相似。下面的可视化表示解释了左连接,它从左表返回不包含右表中相似行的行 ![]() PostgreSQL RIGHT JOINPostgreSQL RIGHT JOIN 用于返回右表中定义在 ON 条件中的所有行,以及仅在连接条件满足时,从另一个表中返回的行。 RIGHT JOIN 将从右表获取数据,因为它与 LEFT JOIN 相反。 PostgreSQL 右连接的语法 下面的维恩图显示了 PostgreSQL 右连接的工作原理 ![]() 例如 以下命令用于表示右连接的工作原理,其中我们将 Luxury_cars 表与 Sports_cars 表连接 输出 在执行上述命令后,我们将获得以下输出 ![]() PostgreSQL 右连接的工作原理
带 Where 子句的 PostgreSQL 右连接同样,我们也可以将右连接与 WHERE 条件一起使用。例如,我们将使用 where 子句从右表 (Sports_cars) 中选择不包含左表 (Luxury_cars) 中相似行的行 输出 执行上述命令后,我们将得到以下输出,显示 L_ID 为 NULL 的记录。 ![]() 注意:我们可以等效地使用 RIGHT JOIN 和 RIGHT OUTER JOIN,因为右连接和右外连接的工作方式彼此相似。下面的可视化表示解释了右连接,它从右表返回不包含左表中相似行的行 ![]() PostgreSQL 全外连接FULL OUTER JOIN 用于在左表或右表记录中存在匹配时返回所有记录。 PostgreSQL 全外连接的语法 下面的维恩图显示了 PostgreSQL 全外连接的工作原理 ![]() 例如 以下命令用于表示全外连接的工作原理,以连接 Luxury_cars 表和 Sports_cars 表。 输出 执行上述命令后,我们将获得以下结果 ![]() 使用 where 子句的 PostgreSQL 全外连接下面的维恩图显示了全外连接,它从一个表中返回不包含另一个表中匹配行的行 ![]() 要返回一个表中没有另一个表中匹配行的行,我们将使用带 WHERE 子句的全外连接,如下所示 输出 一旦我们执行了上述命令,我们将得到以下结果 ![]() 概述在本节中,我们学习了多种 PostgreSQL 连接的工作原理,它们将来自各种连接表的数据合并。 |
我们请求您订阅我们的新闻通讯以获取最新更新。