PostgreSQL Natural Join17 Mar 2025 | 4 分钟阅读 在本节中,我们将了解 PostgreSQL Natural join 的工作原理,它用于连接两个或多个表。 什么是 PostgreSQL Natural Join 子句?natural join 用于组合多个表,作为输出,我们将获得新的行,这些行旨在连接每个表的列。 它也用于组合表,从而创建隐式连接,具体取决于组合表中相似的列名。 换句话说,我们可以说 PostgreSQL Natural Join 子句本质上是为一个行集创建一个临时表,以便在多个(两个或多个)表上工作。 这些表将在连接条件中指定,并且至少有一个共同列,并且这些标准列之间应该存在关系。 默认情况下,PostgreSQL 将使用 INNER JOIN 操作。 它可与 LEFT JOIN、INNER JOIN 或 RIGHT JOIN 一起使用,但连接类型必须在连接中定义,否则 PostgreSQL 将默认使用 INNER JOIN 操作。 PostgreSQL Natural Join 的语法Natural Join 关键字与 SELECT 命令一起使用,必须写在 FROM 关键字之后。 注意:在上面的语法中,我们还可以使用星号 (*) 代替 Column-list,因为星号将生成包含以下字段的输出
PostgreSQL Natural join 示例让我们看一个例子来了解 PostgreSQL Natural join 的工作原理 使用 PostgreSQL Natural Join 连接两个表为此,我们将使用 CREATE 命令创建两个名为 Course_categories 和 Course 的表,并使用 INSERT 命令插入一些值。 首先,我们将使用 CREATE 命令创建 Course_categories 和 Course 表 以下语句用于创建 Course_categories 表 以下命令用于创建 Course 表 执行上述命令后,已成功创建 Course_categories 和 Course 表。 在上面的表中,所有 Course categories 都有零个或多个 courses,但这里所有课程都链接到唯一的 Course categories。 在 Course_catagories 表中,Cousre_id 列是外键,它被称为 Course 表的主键。 我们将使用 PostgreSQL Natural Join,因为 Course_id 是两个表中的标准列。 生成两个表后,我们就可以使用 INSERT 命令将一些值插入到其中,如下所示 在下面的命令中,我们将值插入到 Course_catagories 表中 在下面的命令中,我们将值插入到 Course 表中 在创建并将值插入到 Course_categories 和 Course 表中后,我们将使用 SELECT 命令查看特定表上的现有记录 表 1:Course_categories 输出 在实现上述命令后,我们将从 Course_categories 表中获得以下数据 ![]() 表 2:Course 输出 执行上述命令后,我们将从 Course 表中获得以下记录 ![]() 以下查询使用 PostgreSQL Natural Join 子句来合并来自 Course 和 Course_categories 表的记录。 输出 执行上述命令后,我们将得到以下结果: ![]() 上面的命令类似于下面的命令,其中我们使用 INNER JOIN 子句而不是 Natural Join Keyword。 输出 执行上述命令后,我们将获得以下命令 ![]() 在 PostgreSQL Natural Join 中,似乎没有必要描述 Join 子句,因为它使用依赖于 Common 列的隐式连接条件。 但是我们应该避免在可能的情况下使用 Natural Join,因为有时它可能会导致无法预测的结果。 让我们看一个示例,如果我们在两个表中都有两个标准列。 因此,为此我们将采用 employee 和 department 表 employee 表的结构我们将使用 Select 命令查看 employee 表的结构,如下所示 输出 在实现上述语句后,我们将获得以下结果 ![]() department 表的结构我们将使用 Select 命令查看 department 表的结构,如下所示 输出 在实现上述语句后,我们将获得以下结果 ![]() 正如我们在上面的屏幕截图中观察到的,employee 和 department 表具有相同的 emp_id 列,因此我们可以使用 Natural Join 子句 在以下命令中组合这些表 输出 执行上述命令后,我们将获得以下输出 ![]() 在上面的输出中,我们将获得空表,因为两个表还有另一个名为 emp_fname 的公共列,该列不能用于 PostgreSQL Natural Join。 但是 Natural Join 条件仅使用 emp_fname 列。 概述在 PostgreSQL Natural Join 部分,我们学习了以下主题
下一个主题PostgreSQL 触发器 |
我们请求您订阅我们的新闻通讯以获取最新更新。