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简单面试题

hive中drop和delete的区别

mongodb中drop和remove的区别

详解MySQL中DROP,TRUNCATE 和DELETE的区别

详解MySQL中DROP,TRUNCATE 和DELETE的区别

oracle中delete,truncate 和 drop的区别