PostgreSQL 删除 PostgreSQL 更新 PostgreSQL WHERE 子句 PostgreSQL 删除 在本节中,我们将学习如何使用 PostgreSQL 中的 Delete 命令从特定表中删除数据。 DELETE 命令用于从表中删除所有现有记录。而WHERE子句来删除选定的记录,否则,所有的数据将被消除。 注意:TRUNCATE 命令提供了一种更快的技术来删除表中的所有行。 句法 DELETE 命令的基本语法如下: DELETE FROM table_name WHERE [condition]; 上述语法中使用了以下参数: 参数 描述 表名 它用于在 DELETE FROM 子句中定义我们要从中删除数据的表。 Where clause WHERE 子句用于描述应删除哪些记录。如果我们忽略 WHERE 子句,表中的所有记录都将被删除。它是一个可选参数。 的DELETE命令返回移除的行数。如果没有删除行,删除命令将返回零。有时它可能与 WHERE 子句中的条件标识的行数不同,因为该表可能有一个 BEFORE DELETE 触发器。使用该命令删除表中的记录时应谨慎。 万一,我们需要验证引用另一个表中一个或多个列的条件,为此,我们可以使用如下的USING 子句: 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教程的PostgreSQL 插入命令部分中创建的部门和部门**tmp 表。 下面的命令将帮助我们显示部门表的记录: SELECT * FROM 部门; 带有 WHERE 子句的 PostgreSQL DELETE 示例 以下命令用于删除dept_id列中值为 6 的行: DELETE FROM department WHERE dept_id = 6; 执行上述命令后,它将返回一条消息DELETE 1,这意味着已从部门表中删除了一行。 注意:如果我们不使用 WHERE 子句,整个记录将被删除。 如果部门表没有任何带有dept_id 7 的行,则 DELETE 命令确实有效,并返回为DELETE 0。 例如 PostgreSQL DELETE USING 命令示例 如果我们要删除所有行部门的表是有值的dept_id列中department_tmp表,我们需要遵循以下流程: 步骤1 首先,我们将借助以下命令查看department_tmp表数据: SELECT * FROM department_tmp; 执行上述命令后,我们将看到department_tmp的表结构。 第2步 然后,我们将使用下面的删除命令在USING条件的帮助下删除部门表中的行: DELETE FROM department USING department_tmp WHERE department.dept_id = department_tmp.dept_id; Step3 最后,我们将查询部门表以检查删除操作是否正常。 PostgreSQL 删除表中的所有行 在这种情况下,我们不使用以下 DELETE 命令中的 WHERE 条件来删除部门表中的所有行: DELETE FROM department; 正如我们在下图中看到的,部门表现在是空的。 之后,我们将使用DELETE命令的返回条件删除department_tmp表中的所有行并返回删除的行: DELETE FROM department_tmp RETURNING *; PostgreSQL 更新 PostgreSQL WHERE 子句