摘要:在本教程中,您将学习如何使用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
表进行演示。
![MySQL 删除 - 员工表 MySQL DELETE - Employees Table](/wp-content/uploads/2013/02/employees_table.png)
请注意,一旦删除数据,它就会消失。稍后,您将学习如何将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
表:
![](/wp-content/uploads/2014/05/customers_table.png)
例如,以下语句按客户名称字母顺序对客户进行排序,并删除前 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
语句从表中删除数据。