PostgreSQL 删除查询(从选择中删除行)
删除查询 PostgreSQL
- 删除语句 in PostgreSQL 用于从表中删除一个或多个记录。如果要从表中删除选定行 PostgreSQL 允许您将 DELETE 语句与 WHERE 子句结合起来,否则它将删除所有记录。
Postgres 删除查询语法
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 查询中引用一个或多个按名称引用的子查询。
- 表名:要从中删除记录的表的名称。
- 别号:这是目标表名称的替代。
- using-list:表表达式允许在 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 = 3Y AND price = 300;
在上面的命令中,我们删除 id 为 3 且 price 为 300 的行。现在我们可以查询表:
SELECT * FROM Price
这将返回以下内容:
删除了id为3,价格为300的记录。
PostgreSQL 使用存在条件删除查询
使用 EXISTS 条件,您可以使 DELETE 更加复杂。有时,可能需要根据一个表中的记录删除另一个表中的记录。
您将看到,在执行删除时,FROM 子句不允许列出来自多个表的记录,EXISTS 子句变得非常有用。我们有以下两个表:
书:
价格:
然后我们可以运行以下查询:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
上述命令将从 Book 表中删除 Price 表中存在的一条记录,该记录的 id 与 Book 表的 id 匹配,并且价格低于 250。
Book 表现在如下:
id为1的记录已被删除。
如何删除行 PostgreSQL 使用 pgAdmin
以下是删除行的步骤 PostgreSQL 使用 pgAdmin:
有一个条件
要通过 pgAdmin 完成相同操作,请执行以下操作:
步骤 1)登录你的 pgAdmin 账户
打开 pgAdmin 并使用您的凭据登录到您的帐户
步骤 2)创建演示数据库
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤 3)输入查询
在查询编辑器中输入以下查询:
DELETE FROM Price WHERE id = 4;
步骤4)执行查询
单击执行按钮
步骤 5)检查行是否被删除
让我们检查一下删除是否成功:
有两个条件
要通过 pgAdmin 完成相同操作,请执行以下操作:
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
DELETE FROM Price WHERE id = 3 AND price = 300;
步骤4) 单击执行按钮。
步骤5) 让我们检查一下删除是否成功:
使用 EXISTS 条件
要通过 pgAdmin 完成相同操作,请执行以下操作:
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
步骤4) 单击执行按钮。
步骤5) 让我们检查一下删除是否成功:
总结
- DELETE 语句用于从表中删除一个或多个记录。
- 要从表中删除选定的行,可以将 DELETE 语句与 WHERE 子句组合起来。
- 如果使用 DELETE 子句而不使用 WHERE 子句,它将从表中删除所有记录。
- table-name 参数允许您添加要从中删除记录的表的名称。
- 我们可以使用带有一个条件的 DELETE 语句,该条件使用 WHERE 子句指定。
- DELETE 语句还可以与 WHERE 子句中指定的两个条件一起使用。这两个条件应使用 AND 运算符连接起来。
- - EXISTS 条件可以帮助我们根据另一个表的记录从一个表中删除记录。