PostgreSQL 临时表

17 Mar 2025 | 4 分钟阅读

在本节中,我们将了解 PostgreSQL 临时表 的工作原理以及如何创建和删除它。

如何创建 PostgreSQL 临时表

临时表是一个短暂的表;顾名思义,它只在数据库会话期间存在。 PostgreSQL 会在操作或会话结束时自动删除临时表。

PostgreSQL Temporary Table

在这里,我们将使用 CREATE TEMPORARY TABLE 命令来创建临时表。

语法

以下语法用于在 PostgreSQL 中创建临时表

除了在上面的语法中使用 TEMPORARY 关键字之外,我们还可以使用 TEMP 关键字。

PostgreSQL 临时表的示例

让我们看一些例子来了解临时表在实际中的工作方式。

在这里,我们正在 SQL shell (psql) 中创建一个 temp 表。 因此,为此,我们将遵循以下过程

首先,使用 psql 登录到 PostgreSQL 数据库服务器,并借助以下命令创建一个名为 Jtp 的新数据库

输出

执行上述命令后,我们将得到以下输出,该输出显示已成功创建 jtp 数据库。

PostgreSQL Temporary Table

要查看之前创建的所有数据库的列表,我们将输入以下命令

输出

实现上述命令后,我们得到以下结果

PostgreSQL Temporary Table

要连接到数据库,我们将输入以下命令

输出

执行上述命令后,我们得到以下结果

PostgreSQL Temporary Table

创建新数据库后,我们将借助以下命令创建一个名为 jti1 的临时表

输出

一旦我们实现了上述命令,我们将获得以下结果

PostgreSQL Temporary Table

之后,我们将使用 SELECT 命令选择 jti1 表,如下所示

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Temporary Table

然后,我们将关闭上述会话,并启动另一个连接到 jtp 数据库的会话,并从 jti1 表中查询数据,如以下命令所示

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Temporary Table

正如我们所看到的,在这个会话中,我们看不到 jti1 表,因为只有第一个会话可以访问它。

然后我们将借助以下命令退出所有会话

输出

执行上述命令后,我们必须按任意键才能退出 psql 窗口

PostgreSQL Temporary Table

之后,我们将再次登录到数据库服务器并从 jti1 表中获取数据

输出

执行上述命令后,我们将得到以下输出,其中 PostgreSQL 报错,因为 jti1 表不存在。 并且当会话结束时,它会自动删除。

PostgreSQL Temporary Table

PostgreSQL 临时表名称

临时表可以与永久表共享相同的名称,尽管这不是强制性的。或者,如果我们创建的 临时表永久表 具有相同的名称,则在删除临时表之前,我们无法检索永久表。

例如

在这里,首先我们将借助以下命令创建一个名为 的表

输出

实现上述命令后,我们将得到以下消息窗口; fruits 表已成功创建。

PostgreSQL Temporary Table

之后,我们将创建一个 临时 表,其名称与 fruits 相似。

输出

正如我们从下图中看到的那样,临时表 fruits 已成功创建。

PostgreSQL Temporary Table

成功创建两个表后,我们将使用 SELECT 命令fruits 表中选择 记录

输出

执行上述命令后,我们将得到以下结果,在其中我们可以看到 PostgreSQL 检索了 临时fruits 而不是 永久 表。

PostgreSQL Temporary Table

当显式删除临时表 fruits 时,我们只能在现有会话中拥有永久 fruits 表。

注意:我们可能无法在 CREATE TEMP TABLE 命令中定义模式,因为 PostgreSQL 在特定模式中创建临时表。

如果我们在 Jtp 数据库中 列出表,我们将仅使用以下命令看到临时表 fruits,而不是永久表

输出

正如我们在下面的结果中看到的那样,fruits 临时表的模式是 pg_temp_3

PostgreSQL Temporary Table

如何删除 PostgreSQL 临时表

在这里,我们借助 Drop table 命令删除临时表。

删除 PostgreSQL 临时表的语法

以下语法用于在 PostgreSQL 中删除临时表

CREATE TABLE 命令相比,DROP TABLE 命令 并没有为 临时表 精确定义 TEMP 或 TEMPORARY 关键字的概念。

让我们看一个 示例 来了解删除临时表的工作原理。

在这里,我们将使用以下命令删除我们在上述示例中创建的临时表 fruits

输出

执行上述命令后,我们将得到以下消息: fruits 表已成功删除。

PostgreSQL Temporary Table

如果再次使用以下命令在 jtp 数据库中 列出表

输出

实现上述命令后,它将在此特定列表中显示永久表 fruits

PostgreSQL Temporary Table

概述

  • 我们已经了解了有关 临时表 的知识。
  • 我们借助 CREATE TEMP TABLE 命令来 创建 一个临时表。
  • 删除 临时表,我们使用 DROP TABLE 命令。