MySQL——delete 和 truncate 以及 drop 区别
Posted 贱小提莫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL——delete 和 truncate 以及 drop 区别相关的知识,希望对你有一定的参考价值。
delete 和 truncate 以及 drop 区别
(个人理解,如有错误,请指出)
delete < truncate < drop
删除方式:
truncate 只删除数据、逐条删除
delete 只删除数据、先删除整个表,把那行剔除掉再创建(?)
drop 删除整个表(结构和数据)
空间:
truncate 表和索引所占用的空间会恢复到初始大小
delete 不会减少表或者索引所占的空间。
drop 将表所占的空间全释放掉
应用范围:
truncate 只用于table
delete 可以是table和view
语句属性:
delete DML(data maintain language)数据操纵语言: 用来操作表中数据
truncate和drop DDL(data define language)数据定义语言 : 定义数据库或者表结构
————所以delete有删除记录能回滚,其他不行。
应用:
delete 删除部分数据行采用delete且注意结合where来约束影响范围。回滚段要足够大。
drop 删除表
truncate 保留表而将表中数据删除,于事务无关。如果和事务有关,或想触发trigger,还是用delete。
以上是关于MySQL——delete 和 truncate 以及 drop 区别的主要内容,如果未能解决你的问题,请参考以下文章
MySQL DELETE语句和TRUNCATE TABLE语句的区别