drop
语法:

drop table 表名称

删除内容和定义,删除的是整个表(结构和数据),将表所占用的空间全释放掉。无法回滚,所以删除是不能恢复的,如果再次使用的话需要新建表。

truncate

truncate table 表名称

只是清空表,删除内容,释放空间,但不删除定义(保留表的数据结构)。且不会把删除操作记录记入日志保存,无法回滚,所以删除是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

delete

delete from 表名称 where 列名称 =

删除表中的行,不删除表的结构。执行删除的过程是每次从表中删除一行,并且将该行的删除操作作为事务在日志中保存,以便进行进行回滚操作。delete会根据指定的条件删除表中满足条件的数据,where就是条件判断。如果不指定where子句,那么删除表中所有记录。
delete操作不会减少表或索引所占用的空间。

对比:

  1. drop是DDL语句,删除表结构及所有数据,同时删除表的结构所依赖的约束,触发器,索引;
  2. truncate也是DDL语句,删除的是表中全部的数据,不能选择删除部分数据,不删除表结构;
  3. delete是DML语句,可以选择删除部分数据,也可以删除全部数据;
  4. drop,truncate和不带where子句的delete都会删除表内的数据;
  5. drop,truncate都是DDL语句,执行后会自动提交;
  6. 在执行速度上,drop > truncate > delete;
  7. 在使用drop和truncate时要格外谨慎,虽然可以恢复,但会比delete删除麻烦很多。
Logo

一站式 AI 云服务平台

更多推荐