PostgreSQL 连接类型:内连接、外连接、左连接、右连接

什么是 Join PostgreSQL?
PostgreSQL 加入 用于从多个表中检索数据。通过连接(JOIN),我们可以将 SELECT 和 JOIN 语句合并成一个语句。在语句中添加 JOIN 条件,并返回所有满足条件的行。来自不同表的值基于公共列进行合并。公共列通常是第一个表的主键和第二个表的外键。
PostgreSQL 连接类型
有两种类型的连接 PostgreSQL:
- 内连接
- 外连接
PostgreSQL 内部联接
内连接有 3 种类型 PostgreSQL:
- Theta 加入
- 自然连接
- 加入EQUI
Theta 加入
西塔连接允许根据西塔表示的条件连接两个表。西塔连接可以与所有比较运算符一起使用。在大多数情况下,西塔连接称为内连接。
θ 连接是最基本的 JOIN 类型。它将返回满足 JOIN 条件的表中的所有行。
语法:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
考虑以下 Demo 数据库的表:
书:
价格:
我们想要查看每本书的名称以及对应的价格。我们可以运行以下命令:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
这将返回以下内容:
只有 3 行满足连接条件。
加入EQUI
EQUI 连接为我们提供了一种基于主键/外键关系连接两个表的方法。例如:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
这将返回以下内容:
根据公共列(即 id 列),两个表都返回了记录。
自然加入
这种类型的连接为我们提供了编写 EQUI 连接的另一种方法。我们可以通过添加 NATURAL 关键字来改进前面的示例,如下所示:
SELECT * FROM Book NATURAL JOIN Price;
这将返回以下内容:
仅返回了一个 id 列。NATURAL JOIN 能够注意到 id 列在两个表中是共同的。仅返回了一个。
PostgreSQL 外连接
外连接有 3 种类型 PostgreSQL:
- 左外连接
- 右外连接
- 完全外部加入
PostgreSQL 左外连接
LEFT OUTER JOIN 将返回左侧表中的所有行,并且仅返回右侧表中满足连接条件的行。
语法:
SELECT columns FROM table-1 LEFT OUTER JOIN table-2 ON table-1.column = table-2.column;
我们需要查看每本书的名字以及对应的价格,可以运行以下命令:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
这将返回以下内容:
Book 表中的所有 4 行都已返回。Price 表中只有 3 行满足连接条件。因此返回了它们。最后一本书没有相应的价格值。
PostgreSQL 右外连接
RIGHT OUTER JOIN 返回右侧表中的所有行以及左侧表中满足连接条件的行。
语法:
SELECT columns FROM table-1 RIGHT OUTER JOIN table-2 ON table-1.column = table-2.column;
例如:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
这将返回以下内容:
Price 表中的所有行都已返回。Book 表中仅返回了满足连接条件的行。由于未找到匹配项,因此第 3 行的 name 字段没有值。
全外连接 PostgreSQL
这种类型的 JOIN 将返回左侧表中的所有行以及右侧表中的所有不满足连接条件的为空的行。
语法:
SELECT columns FROM table-1 FULL OUTER JOIN table-2 ON table-1.column = table-2.column;
例如:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
这将返回以下内容:
所有表的所有行都已返回,其中未找到匹配项的位置为空。
使用 pgAdmin
以上任务可在 pgAdmin 中按如下步骤完成。以下各节将逐步介绍每种加入类型。
pgAdmin 内连接
以下步骤展示了如何在 pgAdmin 中运行每个内部连接变体。
如何使用 Theta 加入 PostgreSQL 使用 pgAdmin
以下是使用 Theta Join 的步骤 PostgreSQL 使用 pgAdmin:
步骤 1)登录你的 pgAdmin 账户
打开 pgAdmin 并使用您的凭据登录
步骤2)创建演示数据库
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤 3)输入查询
在查询编辑器中输入以下查询:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
步骤4)执行查询
单击执行按钮
它应该返回以下内容:
加入EQUI
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
步骤4) 单击执行按钮。
它应该返回以下内容:
自然加入
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT * FROM Book NATURAL JOIN Price;
步骤4) 单击执行按钮。
它应该返回以下内容:
pgAdmin 简单内连接
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
步骤4) 单击执行按钮。
它应该返回以下内容:
pgAdmin 外连接
接下来,按照以下步骤在 pgAdmin 中运行三个外连接变体。
左外连接
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
步骤4) 单击执行按钮。
它应该返回以下内容:
右外连接
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
步骤4) 单击执行按钮。
它应该返回以下内容:
完全外部加入
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
步骤4) 单击执行按钮。
它应该返回以下内容:





























