MySQL 中的删除数据 delete 和 truncate??? 在 MySQL 中有两种方法可以删除数据, 一种是 DELETE 语句, 另一种是 TRUNCATETABLE 语句????DELETE 语句可以通过 WHERE 对要删除的记录进行选择???TRUNCATETABLE 将删除表中的所有记录因此, DELETE 语句更
MySQL 中的删除数据 delete 和 truncate ? ? ? 在 MySQL 中有两种方法可以删除数据, 一种是 DELETE 语句, 另一种是 TRUNCATE TABLE 语句 ? ? ? ? DELETE 语句可以通过 WHERE 对要删除的记录进行选择 ? ? ? TRUNCATE TABLE 将删除表中的所有记录因此, DELETE 语句更
MySQL 中的删除数据 delete 和 truncate
? ? ? 在 MySQL 中有两种方法可以删除数据, 一种是 DELETE 语句, 另一种是 TRUNCATE TABLE 语句
?
? ? ? DELETE 语句可以通过 WHERE 对要删除的记录进行选择
? ? ? TRUNCATE TABLE 将删除表中的所有记录因此, DELETE 语句更灵活
?
如果要清空表中的所有记录, 可以使用下面的两种方法:
- ? ? ? ?DELETE FROM table1
- ? ? ? ?TRUNCATE TABLE table1
其中第二条记录中的 TABLE 是可选的
如果要删除表中的部分记录, 只能使用 DELETE 语句
- DELETE FROM table1 WHERE ...;
- ?
如果 DELETE 不加 WHERE 子句, 那么它和 TRUNCATE TABLE 是一样的, 但它们有一点不同, 那就是 DELETE 可以返回被删除的记录数, 而 TRUNCATE TABLE 返回的是 0
如果一个表中有自增字段, 使用 TRUNCATE TABLE 和没有 WHERE 子句的 DELETE 删除所有记录后, 这个自增字段将起始值恢复成 1. 如果你不想这样做的话, 可以在 DELETE 语句中加上永真的 WHERE, 如 WHERE 1 或 WHERE true
DELETE FROM table1 WHERE 1;
上面的语句在执行时将扫描每一条记录但它并不比较, 因为这个 WHERE 条件永远为 true 这样做虽然可以保持自增的最大值, 但由于它是扫描了所有的记录, 因此, 它的执行成本要比没有 WHERE 子句的 DELETE 大得多
DELETE 和 TRUNCATE TABLE 的最大区别是 DELETE 可以通过 WHERE 语句选择要删除的记录但执行得速度不快而且还可以返回被删除的记录数而 TRUNCATE TABLE 无法删除指定的记录, 而且不能返回被删除的记录但它执行得非常快
?
和标准的 SQL 语句不同, DELETE 支持 ORDER BY 和 LIMIT 子句, 通过这两个子句, 我们可以更好地控制要删除的记录如当我们只想删除 WHERE 子句过滤出来的记录的一部分, 可以使用 LIMIB, 如果要删除后几条记录, 可以通过 ORDER BY 和 LIMIT 配合使用假设我们要删除 users 表中 name 等于 "Mike" 的前 6 条记录可以使用如下的 DELETE 语句:
DELETE FROM users WHERE name = 'Mike' LIMIT 6;
一般 MySQL 并不确定删除的这 6 条记录是哪 6 条, 为了更保险, 我们可以使用 ORDER BY 对记录进行排序
- DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;
- ?
来源: https://www.php1.cn/detail/php-29f25388dd.html