MySQL DELETE语句


MySQL DELETE语句用于从MySQL的表中删除单个记录或多个记录。

语法

最简单的MySQL DELETE语句的语法为:

1
2
DELETE FROM table
[WHERE conditions];

完整语法为:

1
2
3
4
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语句

1
2
DELETE FROM contacts
WHERE last_name = 'Johnson';

将从表中删除所有last_name为Johnson 的记录。

如果要知道删掉的行数,可以在执行删除操作之前,运行下面MySQL SELECT语句来确定将要删除的行数。

1
2
3
SELECT count(*)
FROM contacts
WHERE last_name = 'Johnson';

示例-有两个条件的DELETE语句

1
2
3
DELETE FROM contacts
WHERE last_name = 'Johnson'
AND contact_id < 1000;

将从表中删除所有last_name为'Johnson'并且customer_id小于1000的记录。


示例-在DELETE语句中使用LIMIT修饰符

LIMIT 操作符一般和 ORDER BY 一起使用。

1
2
3
4
DELETE FROM contacts
WHERE last_name = 'Johnson'
ORDER BY contact_id DESC
LIMIT 1;

找出contacts表中last_name为'Johnson'的记录,然后根据contact_id进行降序排序。
最后删掉第一条记录。


示例-在DELETE语句中使用EXISTS

还可以使用MySQL EXISTS子句来基于另一个表中的值删除一个表中的记录。

1
2
3
4
5
6
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。


原文链接:https://codingdict.com/