📜  MySQL DELETE语句

📅  最后修改于: 2020-11-17 02:29:09             🧑  作者: Mango

MySQL DELETE语句

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

使用此查询删除记录后,我们将无法恢复它。因此,在从表中删除任何记录之前,建议创建数据库的备份。数据库备份使我们可以在将来需要时还原数据。

句法:

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

DELETE FROM table_name WHERE condition;

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

如果要使用单个DELETE查询从多个表中删除记录,则必须在DELETE语句中添加JOIN子句。

如果我们想从一个表中删除所有记录,而又不知道被删除的行数,则必须使用TRUNCATE TABLE语句,以提高性能。

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

MySQL DELETE语句示例

在这里,我们将使用“雇员”和“付款”表来演示DELETE语句。假设“雇员”和“付款”表包含以下数据:


如果要删除emp_id为107的员工,则应将DELETE语句与WHERE子句一起使用。请参阅以下查询:

mysql> DELETE FROM Employees WHERE emp_id=107;

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

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

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

MySQL DELETE和LIMIT子句

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

DELETE FROM table_name
WHERE condition 
ORDER BY colm1, colm2, ...
LIMIT row_count;

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

例如,以下查询首先根据员工姓名的字母顺序对其进行排序,然后从表中删除前三个员工:

mysql> DELETE FROM Employees ORDER BY name LIMIT 3;

它将给出以下输出:

MySQL DELETE和JOIN子句

JOIN子句用于在MySQL中添加两个或多个表。每当我们想在单个查询中从多个表中删除记录时,我们都会在DELETE语句中添加JOIN子句。请参阅以下查询:

mysql> DELETE Employees, Payment FROM Employees 
INNER JOIN Payment    
ON Employees.emp_id = Payment.emp_id    
WHERE Employees.emp_id = 102;

输出:

执行后,我们将看到如下图所示的输出:

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