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 表:

价格

PostgreSQL 删除具有一个条件的查询

让我们删除 id 为 4 的记录:

DELETE FROM Price
WHERE id = 4;

上述命令将删除id为4的记录,我们来确认一下删除是否成功:

PostgreSQL 删除具有一个条件的查询

id 为 4 的行已被删除。

带两个条件的删除查询

- PostgreSQL DELETE 语句可以采用两个条件。这两个条件应使用 AND 运算符连接。我们将使用下表:

价格:

PostgreSQL 带两个条件的删除查询

考虑下面给出的例子:

DELETE FROM Price
WHERE id = 3Y
AND price = 300;

在上面的命令中,我们删除 id 为 3 且 price 为 300 的行。现在我们可以查询表:

SELECT * FROM Price

这将返回以下内容:

PostgreSQL 带两个条件的删除查询

删除了id为3,价格为300的记录。

PostgreSQL 使用存在条件删除查询

使用 EXISTS 条件,您可以使 DELETE 更加复杂。有时,可能需要根据一个表中的记录删除另一个表中的记录。

您将看到,在执行删除时,FROM 子句不允许列出来自多个表的记录,EXISTS 子句变得非常有用。我们有以下两个表:

书:

PostgreSQL 使用存在条件删除查询

价格:

PostgreSQL 使用存在条件删除查询

然后我们可以运行以下查询:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

上述命令将从 Book 表中删除 Price 表中存在的一条记录,该记录的 id 与 Book 表的 id 匹配,并且价格低于 250。

Book 表现在如下:

PostgreSQL 使用存在条件删除查询

id为1的记录已被删除。

如何删除行 PostgreSQL 使用 pgAdmin

以下是删除行的步骤 PostgreSQL 使用 pgAdmin:

有一个条件

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤 1)登录你的 pgAdmin 账户

打开 pgAdmin 并使用您的凭据登录到您的帐户

步骤 2)创建演示数据库

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

删除行 PostgreSQL

步骤 3)输入查询

在查询编辑器中输入以下查询:

DELETE FROM Price
WHERE id = 4;

步骤4)执行查询

单击执行按钮

删除行 PostgreSQL

步骤 5)检查行是否被删除

让我们检查一下删除是否成功:

删除行 PostgreSQL

有两个条件

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

删除行 PostgreSQL

步骤3) 在查询编辑器中输入查询:

DELETE FROM Price
WHERE id = 3
AND price = 300;

步骤4) 单击执行按钮。

删除行 PostgreSQL

步骤5) 让我们检查一下删除是否成功:

删除行 PostgreSQL

使用 EXISTS 条件

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 EXISTS 条件删除行

步骤3) 在查询编辑器中输入查询:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

步骤4) 单击执行按钮。

使用 EXISTS 条件删除行

步骤5) 让我们检查一下删除是否成功:

使用 EXISTS 条件删除行

总结

  • DELETE 语句用于从表中删除一个或多个记录。
  • 要从表中删除选定的行,可以将 DELETE 语句与 WHERE 子句组合起来。
  • 如果使用 DELETE 子句而不使用 WHERE 子句,它将从表中删除所有记录。
  • table-name 参数允许您添加要从中删除记录的表的名称。
  • 我们可以使用带有一个条件的 DELETE 语句,该条件使用 WHERE 子句指定。
  • DELETE 语句还可以与 WHERE 子句中指定的两个条件一起使用。这两个条件应使用 AND 运算符连接起来。
  • - EXISTS 条件可以帮助我们根据另一个表的记录从一个表中删除记录。

下载本教程使用的数据库