sql truncate清空表(截断表)

概述

truncate的作用是 清空表 或者 截断表,只能作用于表。

从结果看,相当于执行:delete from table,删除了所有记录

语法

truncate table tbl_name
truncate tbl_name

与delete from table的关系

相同点

清空表中所有记录

区别

  1. truncate table 相当于执行 drop table然后再执行create table,创建一模一样的表(表结构、约束、索引等保持不变)。
    delete是将记录一条、一条的删除

  2. truncate性能更高,不能回滚,无法恢复记录。
    执行delete后,可以回滚,恢复记录

  3. truncate是DDL语句,需要拥有表的drop权限
    delete语句 是DML语句

其他:

  1. truncate会重置表的自增值;
    delete不会。

  2. truncate不会激活与表有关的删除触发器;
    delete可以。

  3. truncate后会使表和索引所占用的空间会恢复到初始大小;
    delete操作不会减少表或索引所占用的空间