摘要:在本教程中,您将学习如何使用MySQL DELETE语句从单个表中删除数据。
MySQL DELETE
语句简介
要从表中删除数据,可以使用 MySQL DELETE
语句。下面说明了DELETE
语句的语法:
DELETE FROM table_name
WHERE condition;
Code language: SQL (Structured Query Language) (sql)
在这份声明中:
- 首先,指定要从中删除数据的表。
- 其次,在
WHERE
子句中使用条件指定要删除的行。DELETE
语句将删除符合条件的行,
请注意, WHERE
子句是可选的。如果省略WHERE
子句, DELETE
语句将删除表中的所有行。
除了从表中删除数据之外, DELETE
语句还返回已删除的行数。
要使用单个DELETE
语句从多个表中删除数据,您可以使用DELETE JOIN
语句,该语句将在下一个教程中介绍。
要删除表中的所有行而不需要知道删除了多少行,您应该使用TRUNCATE TABLE
语句以获得更好的性能。
对于具有外键约束的表,当您从父表中删除行时,子表中的行将通过使用ON DELETE CASCADE
选项自动删除。
MySQL DELETE
示例
我们将使用示例数据库中的employees
表进行演示。

请注意,一旦删除数据,它就会消失。稍后,您将学习如何将DELETE
语句放入事务中,以便可以将其回滚。
假设您要删除officeNumber
为 4 的员工,请使用带有WHERE
子句的DELETE
语句,如以下查询所示:
DELETE FROM employees
WHERE officeCode = 4;
Code language: SQL (Structured Query Language) (sql)
要删除employees
表中的所有行,请使用不带WHERE
子句的DELETE
语句,如下所示:
DELETE FROM employees;
Code language: SQL (Structured Query Language) (sql)
删除了employees
表中的所有行。
MySQL DELETE
和LIMIT
子句
如果要限制要删除的行数,请使用LIMIT
子句,如下所示:
DELETE FROM table_table
LIMIT row_count;
Code language: SQL (Structured Query Language) (sql)
请注意,表中行的顺序是未指定的,因此,当您使用LIMIT
子句时,应始终使用ORDER BY
子句。
DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;
Code language: SQL (Structured Query Language) (sql)
考虑示例数据库中的以下customers
表:

例如,以下语句按客户名称字母顺序对客户进行排序,并删除前 10 个客户:
DELETE FROM customers
ORDER BY customerName
LIMIT 10;
Code language: SQL (Structured Query Language) (sql)
同样,以下DELETE
语句选择France
的客户,按信用额度从低到高排序,并删除前 5 个客户:
DELETE FROM customers
WHERE country = 'France'
ORDER BY creditLimit
LIMIT 5;
Code language: SQL (Structured Query Language) (sql)
在本教程中,您学习了如何使用 MySQL DELETE
语句从表中删除数据。