delete、truncate和drop清空表数据的区别?

 1. DELETE FROM tb_class(表名);
 2. TRUNCATE tb_class(表名);
 3. DROP TABLE tb_class(表名);
上面三种方法都可以达到清空表tb_class的数据。但是它们之间有什么区别呢?
  1. 表结构
    TRUNCATE和DELETE只会删除表数据,不会删除表结构
    DROP会删掉整张表,不止表数据,表结构也会跟着删掉,即约束(constrain)、触发器(trigger)、索引(index)被删除,但是依赖于该表的存储过程/函数将保留,只是被变为invalid状态.。
  2. 触发器(trigger)
    DELETE会触发触发器
    TRUNCATE和DROP不会触发触发器
  3. 回滚
    DELETE可以进行事务回滚,以恢复数据,是DML
    TRUNCATE和DROP不能进行事务回滚,是DDL
  4. 表空间
    TRUNCATE缺省情况下将空间释放到 minextents个 extent
    DROP将表所占用的空间全部释放
    DELETE不影响表所占用的extent
    如果一个表中有自增字段,使用truncate table时这个自增字段将起始值恢复成1,而用DELETE删除所有记录后,起始值不会恢复成1,而是会从上次删除之前的值往下增加
  5. 速度
    DROP > TRUNCATE > DELETE
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值