delete、truncate和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语句删除表结构及所有数据,并将表所占用的空间全部释放。

 

posted @ 2019-02-22 11:26  努力努力再努力zZ  阅读(257)  评论(0编辑  收藏  举报