PostgreSQL 从选定的行中删除行

删除查询 PostgreSQL
此 删除语句 in PostgreSQL 用于从表中删除一条或多条记录。要仅从表中删除选定的行, PostgreSQL 允许您将 DELETE 语句与 WHERE 子句结合使用;否则,它将删除表中的所有记录。
PostgreSQL 删除查询语法
可以使用以下语法定义 DELETE 语句:
[ WITH [ RECURSIVE ] with-query [, ...] ] DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ] [ USING using-list ] [ WHERE condition(s) | WHERE CURRENT OF cursor-name] [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]
参数
可使用的参数如下:
- 带查询WITH 子句允许您在 DELETE 查询中按名称引用一个或多个子查询。
- 表名:要从中删除记录的表的名称。
- 别号:目标表名称的替代项。
- 使用列表:允许在 WHERE 子句中使用其他表中的列的表表达式。
- 状况):可选。这些是删除记录必须满足的条件。如果未提供此部分,则将删除所有表名记录。
- 游标名称:用于 WHERE CURRENT OF 条件的游标。此游标获取的最后一行将被删除。
- 输出表达式:每次删除行后,DELETE 语句要处理并返回的表达式。
- 输出名称:返回列所使用的名称。
请注意,由于 DELETE 语句会删除整行,因此无需指定列名。
PostgreSQL 删除具有一个条件的查询
DELETE 语句可以与单个条件一起使用,该条件由 WHERE 子句设置。考虑以下包含以下数据的 Price 表:
价格:
让我们删除 id 为 4 的记录:
DELETE FROM Price WHERE id = 4;
上述命令会删除 id 为 4 的记录。让我们确认一下删除是否成功:
id 为 4 的行已被删除。
带两个条件的删除查询
此 PostgreSQL DELETE 语句也可以接受两个条件。这两个条件应该使用 AND 运算符连接。我们将使用下表:
价格:
考虑下面给出的例子:
DELETE FROM Price WHERE id = 3 AND price = 300;
上述命令删除了 id 为 3 且价格为 300 的行。现在我们可以查询该表:
SELECT * FROM Price;
这将返回以下内容:
删除了id为3,价格为300的记录。
PostgreSQL 使用 EXISTS 条件删除查询
随着 EXISTS 如果存在某些情况,您可以使 DELETE 语句更加复杂。有时可能需要根据另一个表中的记录来删除一个表中的记录。
由于 FROM 子句不允许在执行删除操作时列出来自多个表的记录,因此 EXISTS 子句就非常有用。我们有以下两个表:
书:
价格:
然后我们可以运行以下查询:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
该命令从 Book 表中删除 Price 表中 id 与价格表匹配且价格低于 250 的行。
Book 表现在如下:
id为1的记录已被删除。
如何删除一行 PostgreSQL 使用 pgAdmin
也可以通过 pgAdmin 界面以可视化方式运行相同的删除查询,具体步骤如下:
有一个条件
步骤1) 登录您的pgAdmin帐户。打开pgAdmin并使用您的凭据登录您的帐户。
步骤2) 创建演示数据库。
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入以下查询:
DELETE FROM Price WHERE id = 4;
步骤4) 单击执行按钮。
步骤5) 让我们检查一下该行是否已被删除:
两个条件
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
DELETE FROM Price WHERE id = 3 AND price = 300;
步骤4) 单击执行按钮。
步骤5) 让我们检查一下删除是否成功:
使用 EXISTS 条件
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
步骤4) 单击执行按钮。
步骤5) 让我们检查一下删除是否成功:
















