程序员社区

MySQL系列教程 --- 34、MySQL DELETE(删除) 语句详解

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

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

句法:

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

DELETE FROM table_name WHERE condition;  

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

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

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

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

MySQL DELETE 语句示例

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

file

file

如果我们想删除一个emp_id 为 107的员工,我们应该使用带有 WHERE 子句的 DELETE 语句。请参阅以下查询:

mysql> DELETE FROM Employees WHERE emp_id=107;  

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

file

如果我们想从表中删除所有记录,则不需要在 DELETE 语句中使用 WHERE 子句。请参阅以下代码和输出:

file

在上面的输出中,我们可以看到删除所有行后,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;  

它将给出以下输出:

file

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;  

输出:

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

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 34、MySQL DELETE(删除) 语句详解

一个分享Java & Python知识的社区