数据库中delete、truncate、drop的区别

(1)从指令类型来看:delete属于dml指令;

                                 truncate:truncate是ddl指令

                                 drop:drop是ddl指令

(2)从删除范围上来看:delete可以删除全部数据,也可以在where后面添加条件只删除部分数据;

                                     truncate只能删除表的数据

                                     drop会将删除表的结构以及表的数据全部删除

(3)执行效率:drop > truncate > delete

    1.truncate回收空间,delete在显式提交前不回收
    2.delete在删除数据之前,会在事务记录日志之中记录有关删除的操作,删除行中的数据,方便日后回滚或者利用事务日志中的记录进行数据恢复,truncate不更新事务记录日志。
    3.Delete语句在删除记录时,要先将表中的各行锁定,才能删除记录,
                 而Truncate Table不会锁定各行,只锁定表
    4.如果要删除记录的表是其他表外键指向的表,那么不能用 Truncate Table语句来删除,只能用Delete语句来删除(看级联方式而言)

    5.drop:执行后立即生效

    6. drop table table_name 立刻释放磁盘空间 ,不管是 InnoDB 和 MyISAM; drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index); 依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值