drop、truncate、delete区别❓
🕐分别删除什么❔
drop:删除一个表的所有内容,包括表数据和表结构,并且释放表空间
truncate:删除所有表数据,并不会删除表结构,并且让表恢复到初始大小
delete:删除表数据,并不会删除表结构,不会减少表所占用空间
前两者都属于DDL,执行则立即生效,delete则要到事务提交时才生效
🕑会将原数据放入Rollback Segment吗❔(🔗Rollback Segment是什么?)
drop:❌
truncate:❌
delete:✔
这也就意味着前两者不可以进行回滚操作,前两者的删除不可恢复
🕒会将删除操作记入日志吗❔
drop:❌
truncate:❌
delete:✔
🕓在执行时可触发trigger吗❔
drop:❌
truncate:❌
delete:✔
🕔速度对比:
drop > truncate > delete
(1)delete需要记录日志所以较慢
(2)truncate有点类似于drop之后再create,所以速度上接近于drop
🕕总结:
delete->撕掉书的一页
truncate->烧掉书的内容,留了一个目录
drop->整本书全烧了
❗注意:撕掉还能粘上,烧成灰可就恢复不了了