SQL 的 DELETE FROM 命令用来删除 MySQL 数据表中的记录。
语法:
DELETE FROM <表名>
[WHERE 删除条件]
[ORDER BY 删除顺序]
[LIMIT 被删除行的最大值];
拓展:
TRUNCATE:清空表记录
TRUNCATE [TABLE] 表名;
删除MySQL数据表
DROP TABLE [TABLE] 表名;
delete、drop、truncate都有删除表的作用,区别在于:
-
delete是逐行一条一条删除记录的;truncate 则是直接删除原来的表,再重新创建一个一模一样的新表,执行数据比 delete快。
-
delete 删除数据后,系统不会重新设置自增字段的计数器;truncate 清空表记录后,系统会重新设置自增字段的计数器。
-
delete的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 truncate 不支持 WHERE 子句,只能删除整体。
-
delete会返回删除数据的行数,但是 truncate 只会返回 0,没有任何意义。
-
delete和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除。
-
delete是 DML 语句,操作完以后如果不想提交事务还可以回滚; truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚;
-
执行的速度上,drop>truncate>delete。
总结:
1.需要删除表中全部的数据行时,尽量使用 truncate 语句, 可以缩短执行时间。
2. 不需要该表时,用 drop;当要删除全部数据且保留该表时,用 truncate ;当要删除部分记录时,用 delete。