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,重置成功
如果你还在纠结delete
和truncate
的区别,建议直接跑个例子看看效果,最直观。
还有兴趣深入研究的,推荐几个文章,顺手收藏:
如果你经常清空表做测试,truncate会是个挺省心的工具,但别在正式库上轻易动手哦,误删了可别怪我没提醒你~