PostgreSQL Delete
在本节中,我们将学习如何使用PostgreSQL中的Delete命令从特定表中删除数据。
DELETE命令用于从表中删除所有现有记录。
WHERE 子句用于
删除所选记录 >否则,所有数据将被消除。
注意: TRUNCATE命令提供了一种更快的技术来删除表中的所有行。
语法
DELETE命令的基本语法如下:
DELETE FROM table_name
WHERE [condition];
上面的
语法中使用了以下参数:
参数 |
说明 |
table_name |
它用于在DELETE FROM子句中定义要从中删除数据的表。 |
Where 子句 |
WHERE子句用于描述应删除哪些记录。如果我们忽略WHERE子句,表中的所有记录将被删除。这是一个可选参数。 |
DELETE命令返回已删除的行数。如果未删除任何行,则Delete命令将返回
零。有时它可能与WHERE子句中的条件所标识的行数不同,因为该表可能具有BEFORE DELETE触发器。在使用命令删除表中的记录时,我们应该谨慎。
在这种情况下,我们需要验证引用另一个表中一个或多个列的条件,因此,可以使用
使用条款,如下所示:
DELETE FROM table
USING another_table
WHERE table.id = another_table.id AND
如果我们不需要使用
USING子句,则可以使用子查询,如下面的命令所示:
DELETE FROM table
WHERE table.id = (SELECT id FROM another_table);
PostgreSQL删除命令示例
在这里,我们将使用在
PostgreSQL插入命令部分中创建的department和department_tmp 表。 的
PostgreSQL 教程。
以下命令将帮助我们显示
department表的记录:
SELECT * FROM department;
带有WHERE子句的PostgreSQL DELETE示例
以下内容命令用于删除
dept_id 列中值为6的行:
DELETE FROM department
WHERE dept_id = 6;
执行上述命令后,它将返回带有
DELETE 1 ,这意味着已从department表中删除了一行。
注意: 如果我们不使用WHERE子句,则会删除整个记录。
如果
department表没有任何带有
dept_id 7 的行,则DELETE命令起作用,并以
删除0 。
例如
PostgreSQL DELETE USING命令的示例
如果我们要删除
department表中所有值为
department_tmp 表中的> dept_id 列,我们需要遵循以下过程:
Step1
,我们将在以下命令的帮助下看到
department_tmp 表数据:
SELECT * FROM department_tmp;
执行上述命令后,我们将看到
department_tmp 的表结构。
Step2
然后,我们将使用以下借助
使用条件删除命令,以删除
department表中的行:
DELETE FROM department
USING department_tmp
WHERE
department.dept_id = department_tmp.dept_id;
Step3
最后,我们将查询
department表以检查删除操作是否正常。
PostgreSQL从表中删除所有行
在这种情况下,我们不使用下面的DELETE命令中的WHERE条件从department表中删除所有行:
如下面的图片所示,department表现在为空。
此后,我们将使用DELETE命令的返回条件删除
department_tmp 表中的所有行并返回删除的行:
DELETE FROM department_tmp
RETURNING *;