PostgreSQL Delete

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

在本节中,我们将学习如何使用 PostgreSQL 中的 Delete 命令从特定表中删除数据。

DELETE 命令用于从表中删除所有现有记录。而 WHERE 子句 用于删除选定的记录,否则,所有数据将被删除。

注意:TRUNCATE 命令提供了一种更快的技术来删除表中的所有行。

语法

DELETE 命令的基本语法如下:

以下参数用于上述语法:

参数描述
table_name它用于定义要从 DELETE FROM 子句中删除数据的表。
Where 子句WHERE 子句用于描述应该删除哪个(些)记录。如果我们忽略 WHERE 子句,则表中的所有记录都将被删除。这是一个可选参数。

DELETE 命令返回已删除的行数。如果未删除任何行,则 Delete 命令将返回。有时,它可能与 WHERE 子句中标识的行数不相似,因为表可能有一个 BEFORE DELETE 触发器。我们在使用该命令删除表中的记录时应该小心谨慎。

如果我们需要验证引用另一个表中一个或多个列的条件,那么,我们可以使用下面的 USING 子句

如果我们不需要使用 USING 子句,我们可以使用子查询,如下面的命令所示

PostgreSQL Delete 命令示例

在这里,我们将使用在 PostgreSQL 教程PostgreSQL insert 命令部分中创建的 department 和 department_tmp 表。

下面的命令将帮助我们显示 department 表的记录

PostgreSQL Delete

使用 WHERE 子句的 PostgreSQL DELETE 示例

下面的命令用于删除 dept_id 列中的值为 6 的行


PostgreSQL Delete

执行上述命令后,它将返回一条消息 DELETE 1,这意味着从 department 表中删除了一行。

注意:如果我们不使用 WHERE 子句,则所有记录将被删除。

并且如果 department 表没有任何带有 dept_id 7 的行,则 DELETE 命令将不起作用,并返回 DELETE 0

例如

PostgreSQL Delete

PostgreSQL DELETE USING 命令示例

如果我们想从 department 表中删除在 department_tmp 表中具有 dept_id 列值的行,我们需要遵循以下过程

步骤 1

首先,我们将通过以下命令查看 department_tmp 表数据

执行上述命令后,我们将看到 department_tmp 的表结构。

PostgreSQL Delete

步骤 2

然后,我们将使用下面的 delete 命令并借助 USING 条件来删除 department 表中的行

步骤 3

最后,我们将查询 department 表以检查删除操作是否正常工作。

PostgreSQL 删除表中的所有行

在此示例中,我们未在下面的 DELETE 命令中使用 WHERE 条件来删除 department 表中的所有行

正如我们在下图中看到的那样,department 表现在是空的。

PostgreSQL Delete

之后,我们将使用 DELETE 命令的返回条件来删除 department_tmp 表中的所有行并返回已删除的行


PostgreSQL Delete