MySQL DELETE

摘要:在本教程中,您将学习如何使用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 DELETE - Employees Table

请注意,一旦删除数据,它就会消失。稍后,您将学习如何将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 DELETELIMIT子句

如果要限制要删除的行数,请使用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语句从表中删除数据。

本教程有帮助吗?