📜  PostgreSQL临时表

📅  最后修改于: 2020-11-30 01:25:18             🧑  作者: Mango

PostgreSQL临时表

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

如何创建PostgreSQL临时表

临时表是简要表。它的名字意味着它在数据库会话时显示。 PostgreSQL在操作或会话结束时自动删除临时表。

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

句法

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

CREATE TEMPORARY TABLE temp_table_name(...);

要么

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

Create Temp Table temp_table_Name(...);

PostgreSQL临时表示例

让我们看一些示例,以实时了解临时表的工作。

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

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

CREATE DATABASE jtp;

输出量

执行完上述命令后,我们将获得以下输出,该输出表明jtp数据库已成功创建。

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

\l  

输出量

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

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

\c jtp

输出量

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

创建新数据库后,将在以下命令的帮助下创建名为jti1的临时表:

jtp=# create temp table jti1(name varchar);

输出量

一旦执行了上面的命令,我们将得到以下结果:

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

jtp=# select * from jti1;

输出量

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

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

jtp=# select * from jti1;

输出量

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

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

然后,我们将在以下命令的帮助下退出所有会话:

jtp=# \q

输出量

一旦执行了以上命令,我们必须按任意键退出psql窗口:

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

test=# SELECT * FROM jti1;

输出量

执行完上述命令后,我们将获得以下输出,由于jti1表不存在,PostgreSQL发出了一个错误。当会话结束时,它会自动删除。

PostgreSQL临时表名称

临时表可以与永久表共享类似的名称,但不是必需的。或者,如果我们创建了一个临时表具有类似名称为永久表,我们不能直到临时表被删除检索永久表。

例如

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

Jtp=# CREATE TABLE fruits (fruits_name  VARCHAR PRIMARY KEY,  fruits_season VARCHAR NOT NULL);

输出量

一旦执行了以上命令,我们将获得以下消息窗口;水果表已成功创建。

之后,我们将创建一个临时表,该表的名称与fruit相似。

jtp=# create temporary table fruits ( fruits_name varchar);

输出量

如下图所示,临时表结果已成功创建。

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

jtp=# select * from fruits;

输出量

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

当临时表水果被明确删除时,我们只能在现有会话中拥有永久水果表。

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

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

jtp=# \dt

输出量

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

如何删除PostgreSQL临时表

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

删除PostgreSQL临时表的语法

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

DROP TABLE temp_table_name;

CREATE TABLE命令相比, DROP TABLE命令没有针对临时表的TEMP或TEMPORARY关键字概念。

让我们看一个示例,以了解删除临时表的工作。

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

jtp=# drop table fruits;

输出量

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

如果我们使用以下命令再次列出jtp数据库中的表:

jtp=# \d

输出量

一旦执行了以上命令,它将在该特定列表中显示永久表的结果:

总览

  • 我们已经了解了临时表
  • 我们借助CREATE TEMP TABLE命令创建一个临时临时文件。
  • 删除临时表,我们使用DROP TABLE命令。