暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【sql】drop,truncate,delete

删库跑路小分队 2021-09-03
172

春风得意


春风十里,不及相遇有你❤️

晴空万里,不及心中有你❤️



春天来了

美好的事都将如期而至

愿世界平安

你我无恙

🌈🌈🌈


so,让我们继续刷题吧

drop,truncate,delete


先养眼,再刷题

❤️

今天还是好看的小姐姐



0

Question

Iet me see see



这次我们的话题可能有点紧张沉重

因为涉及到了删库跑路的环节


在面试中,有时候面试官可能会问

drop,truncate,delete的区别

我们的脑海中可能就是一个删除的操作

具体有什么区别,可能比较头大

这次我们就开始从各方面进行解析



1

Answer

Iet me see see



truncate:删除表的数据,但是表结构不变,比如id自增从1开始


delete:直接删除表中的所有数据


drop:直接删除掉表



相同点:


truncate和不带where的delete以及drop都会删除表中的所有数据。

droptruncate都是DDL(数据定义语言)执行后会自动提交 


不同点:

truncatedelete只删除表的数据,不删除表的结构。

drop:删除表的结构,依赖约束,触发器,索引;

并且表的存储过程和函数保留,但变为invalid状态。 




delete是数据库操作语言(dml),这个操作会放到rollback segement中,事务提交后才会生效,如果有响应的trigger,执行的时候才触发。


truncate,drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。 




表和索引所占空间:

当表被truncate后,这个表和索引所占空间会恢复到初始大小。

delete后:不会减少表和索引所占空间的大小

drop:将表所占用的空间全部释放掉。 



速度:一般来说

drop>truncate>delete



安全性:

慎用droptruncate,尤其是没有备份的情况下!

在使用中,想删除部分数据要加上where子句,并且回滚段要足够大。

想删除表直接drop

想保留表同时删除数据,如果和事务没有关系就直接truncate。如果和事务有关,或者想出发trigger,还是delete。 





这次的问题

主要是说关于数据库删除操作

大家在操作中一定要谨慎谨慎再谨慎!



如果小伙伴还有其他的想法或问题也欢迎在评论区留言

让我们一起成长为老鸟,赚大钱!



最后小编的小手手上图




扫码关注我

郭大熊的公众号

个人博客 : www.guodaxiong.com


如果不曾见过阳光,我本可以忍受黑暗

 Hi GuoDaXiong 



我是狗子

祝你幸福

文章转载自删库跑路小分队,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论