相同点:都能删除数据,都不会删除表结构
不同点:TRUNCATE:重新设置自增列,即计数器会归零,且不会影响事务
测试delete和truncate的区别:
- CREATE TABLE `test`(
- `id` INT(4) NOT NULL AUTO_INCREMENT,
- `coll` VARCHAR(20) NOT NULL,
- PRIMARY key (`id`)
- )ENGINE=INNODB DEFAULT CHARSET=utf8
-
- INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3')
初始状态:
delete语句:
DELETE FROM `test`
查看自动增量(选中对应表右键 -> 设计表 -> 选项),此时的自动增量仍为4,即delete语句不会影响自增
此时插入数据id从4开始自增
truncate语句:
TRUNCATE TABLE `test`
执行成功后查看此时的自增量:
说明此时再添加数据id从1开始自增
补充:delete删除数据的问题,重启数据库后的现象