deletetruncate和drop的区别
Posted sqldata
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了deletetruncate和drop的区别相关的知识,希望对你有一定的参考价值。
1、truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器,当表被TRUNCATE后,这个表和索引所占用的空间会恢复到初始大小。
ps:TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变
2、delete语句执行的过程是每次从表中删除一行数据,并且会将改行的删除操作作为事务记录在日志中,以便进行回滚操作。但是DELETE操作不会减少表或索引所占用的空间。
ps:DELETE可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。
3、drop语句将表所占用的空间全释放掉( 删除整个表(结构和数据))
ps:如果要删除表定义及其数据,请使用 DROP TABLE 语句
使用限制
1、但是truncate只针对table进行操作,delete可以对table也可以对view进行操作。
2、对于外键(foreignkey )约束引用的表,不能使用 truncate table,应该使用不带 where 子句的 delete 语句。
3、DROP语句删除表结构及所有数据,并将表所占用的空间全部释放。
以上是关于deletetruncate和drop的区别的主要内容,如果未能解决你的问题,请参考以下文章
详解MySQL中DROP,TRUNCATE 和DELETE的区别