PostgreSQL Insert

2025年3月17日 | 阅读 7 分钟

在本节中,我们将学习 PostgreSQL insert 命令和示例,使用 default 关键字插入日期,以及在 PostgreSQL pgAdmin 和 SQL shell (psql) 中将数据从一个表插入到另一个表。

在 PostgreSQL 中,INSERT 命令用于将新行插入到表中。 我们可以一次将单行或多行值插入到特定表中。

PostgreSQL Insert 命令的语法

使用 default 值关键字插入单个记录

如果我们使用 default 值关键字插入单个记录,则 INSERT 命令的语法 如下

使用子查询插入多个记录

如果我们使用子查询插入多个记录,则 Insert 命令的语法 如下

下表显示了 insert 表语法中使用的参数或实参

参数描述
Table_name用于表示现有表名。
column1, column2… columnN这些是我们要将数据插入的表中的列的名称。
WHERE 条件它是一个可选参数,用于第三个语法。 这些是必须发生的条件才能插入记录。
DEFAULT VALUES所有列都将使用其默认值定义。它用于第二个语法。
source_table当我们想要从另一个表插入数据时使用它。它用于第三个语法。
expression1 | DEFAULT, expression2 | DEFAULT这些是分配给表中列的值。
如果指定了 expression1,则 column1 将被授予 expression1 的值,column2 将被授予 expression2 的值,依此类推。
如果指定了 DEFAULT,则一致的列将使用其默认值占用。 它用于第一个语法。

注意

  • 如果我们要使用 PostgreSQL insert 命令将记录插入表中,则必须提供每个 NOT NULL 列值。
  • 如果该列允许 NULL 值,我们可以从 PostgreSQL insert 命令中忽略该列。

输出

下表显示了输出消息及其含义

输出消息描述
INSERT Oid 1如果只插入了一行,则 Oid 是插入行的数字 OID。
INSERT 0 #如果插入了多行,则会显示此消息,# 是插入的行数。

PostgreSQL insert 命令

我们可以通过两种方式执行 PostgreSQL insert 命令

  • 使用 UI (pgAdmin) 的 PostgreSQL Insert 语句
  • 使用 SQL shell 的 PostgreSQL Insert 语句

使用 UI 的 PostgreSQL Insert 语句

让我们举一个例子来看看如何在表中插入值。 这里,我们有一个名为 Student 的表。

示例 1:VALUES 关键字

为了创建一个 PostgreSQL INSERT 命令来列出这些值,我们将使用 VALUES 关键字。

PostgreSQL Insert

为了在 Student 表中插入值,我们将按照以下步骤

步骤 1

  • 首先,我们将选择 Student 表,然后右键单击它,然后从给定的列表中选择 Script 选项,然后从另一个列表中单击 INSERT Script 选项,正如我们在下面的屏幕截图中看到的那样
PostgreSQL Insert

步骤 2

  • 一旦我们点击 Insert Script,下面的窗口就会出现在屏幕上
PostgreSQL Insert

步骤 3

  • 现在,我们将值插入到 '?' 的位置,然后点击 execute/ refresh button 来执行特定的命令,并将记录添加到 Student 表中。

PgAdmin4 中的 SQL 查询

在下面的屏幕截图中,我们可以看到 pgAdmin4 中的上述命令

PostgreSQL Insert

表结构/输出

执行 Insert 命令后,我们可以通过点击 view table 选项来查看 Student 表的输出,正如我们在下面的屏幕截图中看到的那样

PostgreSQL Insert

示例 2

首先,我们将创建一个新表,以了解 PostgreSQL 中 insert 命令的用法。

注意:我们也可以参考下面的链接来在 PostgreSQL 中创建一个新表。

postgresql-create-table

现在,我们将借助以下命令创建一个 department

执行上述命令后,我们将收到以下消息,即已创建 department 表

PostgreSQL Insert

示例:在表中插入单行值

以下命令用于将 dept_name, location 值插入到 department 表中

我们可以使用 SELECT 命令检查特定表中插入的行

输出

一旦我们执行上面的 select 命令,我们将得到下面的输出

PostgreSQL Insert

如果我们想插入字符数据,我们必须将其括在单引号 (') 中。

例如,'RESEARCH'.

PostgreSQL 会重复为 serial 列 提供值;因此,不需要将值插入到 serial 列 中。

示例:使用子查询插入多行

在这里,我们将使用子查询将各种行值插入到特定表中。

例如:在下面的命令中,我们将把 department 表的 dept_name, location 列中插入多行

一旦我们执行上述命令,我们将得到以下消息,即 dept_namedepartment 表的 location 列中已经插入了三个值

PostgreSQL Insert

我们可以借助 SELECT 命令检查特定表中插入的行

输出

一旦我们执行了上面的 select 命令,我们将得到下面的输出

PostgreSQL Insert

示例:使用 Default 关键字将日期插入到表中

首先,我们将在 department 表中添加一个名为 last_update 的新列,并将其默认值设置为 current_date,正如我们在下面的命令中看到的那样

执行上述命令后,department 表被更改,并且已经创建了 last_column

PostgreSQL Insert

以下命令用于插入一个新行,以便在 department 表中定义日期。

注意:在 PostgreSQL 中,日期格式为 YYYY-MM-DD。

输出

执行上述命令后,我们将得到消息窗口

PostgreSQL Insert

为了设置 日期列 或任何其他列的 默认值,我们也可以使用 DEFAULT 关键字,正如我们在下面的命令中看到的那样

输出

执行上述命令后,我们将得到以下消息窗口,即特定值已插入到 department 表中

PostgreSQL Insert

为了检查 department 表中插入的记录,我们将使用 SELECT 命令

输出

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

PostgreSQL Insert

示例:从另一个表插入数据

为了从另一个表插入数据,我们将按照以下步骤

步骤 1

首先,我们创建另一个名为 department_tmp 的表,该表具有与 department 表类似的表结构

执行上述命令后,已经创建了 department_tmp

PostgreSQL Insert

步骤 2

一旦我们创建了该表,我们将插入 department 表中的行,该行的 date 列 的值不是 NULL:

输出

执行上述命令后,我们将得到以下消息窗口,显示已成功插入特定值。

PostgreSQL Insert

步骤 3

之后,我们将使用 SELECT 命令从 department_tmp 表中检查插入操作

输出

在执行上述命令后,我们将获得以下输出

如果我们想从 department 表中 获取最后插入的 dept_id,我们将按照以下流程

一旦我们在 insert 命令 中插入了新行,我们将使用 RETURNING 子句,它是 SQL 的 PostgreSQL 扩展。

以下命令将新行插入到 department 表中,并返回最后插入的 Dept_id:

输出

一旦我们执行了上述命令,我们将得到 Dept_id=7。

PostgreSQL Insert

之后,我们将使用 Select 命令来检查 dept_id 是否正确。

输出

一旦我们执行了 Select 命令,我们就可以看到,一旦我们创建了 customer 表,我们将借助以下命令在 Customer 表中插入一行:Dept_id 与 department 表中最后插入的 Dept_ id 匹配。

PostgreSQL Insert

使用 psql 的 PostgreSQL Insert 命令

在 SQL shell(psql) 中,我们将首先借助以下命令在 javatpoint 数据库 中创建一个名为 Customer table 的表

一旦我们创建了 customer 表,我们将借助以下命令在 Customer 表中插入一行

之后,我们将在特定表中插入多行,正如我们在下面的命令中看到的那样

我们将使用 SELECT 命令来检查上述值是否已插入到 Customer 表 中。

输出

在执行上述命令后,我们将获得以下输出

PostgreSQL Insert
下一个主题PostgreSQL Select