删除数据
MySQL删除数据的方式有两种,一种为delete,一种为truncate
delete删除数据
1 | delete from 表名 where 条件 |
truncate删除数据
1 | truncate table 表名; |
两者的区别
- delete可以加where条件进行删除,truncate不可以,只能删除全表数据
- delete删除不会删除自增长记录,再次新增时自增长字段从断点继续自增,truncate删除数据之后自增长记录从1开始
- delete删除会返回删除的条数,truncate删除不会返回
- delete删除可以回滚,truncate删除不可以回滚
- delete删除可以触发trigger,truncate不会
- truncate比delete速度快,因为delete每删除一条数据需要在事务日志中为删除的每行数据进行记录,而truncate则通过释放数据页来删除数据,且只在事务日志中记录页的释放
- 使用truncate表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表和索引所占用的空间
注意:删除数据时使用delete即可,尤其是没有数据备份的情况下