MySQL DELETE 语句

2025年3月17日 | 阅读 3 分钟

MySQL DELETE 语句用于从不再需要的 MySQL 表中删除记录。此 MySQL 查询会删除表中的整行并产生删除的行数。它还允许我们在单个查询中从表中删除多条记录,这在删除大量记录时非常有用。通过使用 delete 语句,我们还可以根据条件删除数据。

一旦使用此查询删除了记录,就无法恢复。因此,在从表中删除任何记录之前,建议创建数据库备份。数据库备份使我们能够在将来需要时恢复数据。

语法

以下是说明如何使用 DELETE 语句的语法

在上述语句中,我们首先要指定要从中删除数据的表名。其次,我们必须在 WHERE 子句中指定删除记录的条件,这是可选的。如果我们在语句中省略 WHERE 子句,此查询将删除数据库表中的所有记录。

如果我们想使用单个 DELETE 查询从多个表中删除记录,我们必须将 JOIN 子句与 DELETE 语句一起添加。

如果我们想在不知道删除行数的情况下删除表中的所有记录,我们必须使用 TRUNCATE TABLE 语句,该语句性能更好。

让我们通过各种示例来了解 DELETE 语句在 MySQL 中是如何工作的。

MySQL DELETE 语句示例

在这里,我们将使用 "Employees""Payment" 表来演示 DELETE 语句。假设 Employees 和 Payment 表包含以下数据

mysql delete query
mysql delete query

如果我们要删除 emp_id 为 107 的员工,应使用带 WHERE 子句的 DELETE 语句。请参见下面的查询

执行查询后,将返回如下图像的输出。删除记录后,使用 SELECT 语句验证表

mysql delete query

如果我们要删除表中的所有记录,则无需在 DELETE 语句中使用 WHERE 子句。请参见下面的代码和输出

mysql delete query

在上面的输出中,我们可以看到,在删除了所有行之后,Employees 表将变为空。这意味着在选定的表中没有可用的记录。

MySQL DELETE 和 LIMIT 子句

MySQL Limit 子句用于限制从结果集中返回的行数,而不是获取表中的所有记录。有时我们想限制要从表中删除的行数;在这种情况下,我们将使用 LIMIT 子句,如下所示

需要注意的是,MySQL 表中的行顺序是未指定的。因此,在使用 LIMIT 子句时,应始终使用 ORDER BY 子句。

例如,以下查询首先按字母顺序对员工进行排序,然后删除表中的前三名员工

它将显示以下输出

mysql delete query

MySQL DELETE 和 JOIN 子句

JOIN 子句用于在 MySQL 中添加两个或多个表。当我们想在单个查询中从多个表中删除记录时,将把 JOIN 子句与 DELETE 语句一起添加。请参见下面的查询

输出

执行后,我们将看到如下图像的输出

mysql delete query

要了解有关带 JOIN 子句的 DELETE 语句的更多信息,请单击此处