SQL中delete、drop、truncate的比较(面试常问)

发布时间 2023-03-27 21:18:36作者: Tartaglia
  • 相同点:
  1. truncate和不带where子句的delete、以及drop都会删除表内的数据;
  2. drop、truncate都是DDL(数据定义语言)语句,执行后会自动提交
  • 不同点:
  1. truncate和delete只删除数据,不删除表的结构;drop则删除整张表(结构和数据);
  2. delete属于DML语句,事务提交之后才会生效支持rollback操作;truncate和drop属于DDL语句,操作后立即生效不支持rollback操作
  3. 一般而言,执行速度:drop > truncate > delete;
  4. 应用范围:truncate只能对table;delete可以是table和view;drop可以是database、table、字段;
  5. 对于一张表:truncate后,立即释放磁盘空间,这个表的索引所占用的空间会恢复到初始大小;delete后,存储空间不会被释放,只是把删除的数据行设置为不可见;drop后,立即释放磁盘空间