MySQL DELETE语句
时间:2019-02-04 12:52:26 来源:igfitidea点击:
MySQL DELETE语句用于从MySQL的表中删除单个记录或多个记录。
语法
最简单的MySQL DELETE语句的语法为:
DELETE FROM table [WHERE conditions];
完整语法为:
DELETE [ LOW_PRIORITY ] [ QUICK ] [ IGNORE ] FROM table [WHERE conditions] [ORDER BY expression [ ASC | DESC ]] [LIMIT number_rows];
参数 | 说明 |
---|---|
LOW_PRIORITY | 可选的。延迟删除,,直到没有进程从表中读取数据。LOW_PRIORITY可以与使用表级锁定的MyISAM,MEMORY和MERGE表一起使用。 |
QUICK | 可选的。在删除过程中不会合并索引index叶子,从而使MyISAM表的删除速度更快。 |
IGNORE | 可选的。忽略删除过程中遇到的所有错误。IGNORE是在MySQL 4.1.1中引入的。 |
table | 要从中删除记录的表。 |
WHERE conditions | 可选的。删除记录必须满足的条件。如果没有提供任何条件,则表中的所有记录都将被删除。 |
ORDER BY expression | 可选的。当限制要删除的记录数时,可以与LIMIT结合使用以对记录进行适当的排序。 |
LIMIT | 可选的。 最多删除 number_rows 行 |
MySQL DELETE语句示例
示例-只有一个条件的DELETE语句
DELETE FROM contacts WHERE last_name = 'Johnson';
将从表中删除所有last_name为Johnson 的记录。
如果要知道删掉的行数,可以在执行删除操作之前,运行下面MySQL SELECT语句来确定将要删除的行数。
SELECT count(*) FROM contacts WHERE last_name = 'Johnson';
示例-有两个条件的DELETE语句
DELETE FROM contacts WHERE last_name = 'Johnson' AND contact_id < 1000;
将从表中删除所有last_name为'Johnson'并且customer_id小于1000的记录。
示例-在DELETE语句中使用LIMIT修饰符
LIMIT 操作符一般和 ORDER BY 一起使用。
DELETE FROM contacts WHERE last_name = 'Johnson' ORDER BY contact_id DESC LIMIT 1;
找出contacts表中last_name为'Johnson'的记录,然后根据contact_id进行降序排序。
最后删掉第一条记录。
示例-在DELETE语句中使用EXISTS
还可以使用MySQL EXISTS子句来基于另一个表中的值删除一个表中的记录。
DELETE FROM suppliers WHERE EXISTS ( SELECT * FROM customers WHERE customers.customer_id = suppliers.supplier_id AND customer_id > 500 );
将从供应者表中删除特定的记录,这些记录的supplier_id和客户表中的某一条记录customer_id相匹配, 并且该customer_id要大于500。