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语句。假设Employees和Payment表包含以下数据:
如果要删除一个员工, emp_id为107 , 我们应该使用带有WHERE子句的DELETE语句。查看下面的查询:
mysql> DELETE FROM Employees WHERE emp_id=107;
执行查询后,将返回如下图像的输出。一旦记录被删除,使用SELECT语句来验证表格:
如果我们想要从表中删除所有记录,使用DELETE语句时不需要使用WHERE子句。请看下面的代码和输出:
在上面的输出中,我们可以看到在移除了所有行之后,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语句的更多信息, 点击这里 。