mysql 的truncate命令,比delete还干脆,直接把表清个干净,连自增 ID 都归零。你要是有个测试表老插老删,ID 蹭蹭往上涨,看着心烦?嗯,用truncate,一下清爽不少。

delete只是删记录,不碰 ID 自增计数。比如你删完后再插数据,ID 会上次的走。这对有些业务没影响,但有时会搞乱你的数据序列,看着也不爽。

truncate就比较暴力,整个表重置,像新建的一样。你插第一条数据,ID 就从 1 开始,干净利落。适合做临时测试、初始化数据的时候用。注意哦,它可不是软删除,数据一删就没了,连回滚都不给你机会。

下面是个例子:

mysql>; delete from t1;
mysql>; insert into t1 (name) values ('ac4');
mysql>; select id from t1;
-- 结果是 4,ID 没重置

mysql>; truncate t1; mysql>; insert into t1 (name) values ('ac6'); mysql>; select id from t1; -- 结果是 1,重置成功

如果你还在纠结deletetruncate的区别,建议直接跑个例子看看效果,最直观。

还有兴趣深入研究的,推荐几个文章,顺手收藏:

如果你经常清空表做测试,truncate会是个挺省心的工具,但别在正式库上轻易动手哦,误删了可别怪我没提醒你~