drop ,delete ,truncate 的区别

delete,drop,truncate 都有删除表的作用,SQL语法:

  1、drop table 表名称                                       

         eg: drop table  tb

        删除表的全部数据和表结构,立刻释放磁盘空间,不管是Innodb、MyISAM。

  2、truncate table 表名称                       

       eg: truncate  table tb    

        删除表全部数据,保留表数据,立刻释放磁盘空间,不管是Innodb、MyISAM。

 3、delete from 表名称 

      eg: delete from tb

      删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,Innodb 不会释放磁盘空间。

4、delete from 表名称 where 列名称 = 值  

      eg: delete from tb where test='test'

      带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间。

drop ,delete ,truncate 的区别

相同点:

      1. truncate和不带where子句的delete、以及drop都会删除表内的数据。

      2. drop、truncate是DDL语句(数据库定义语言),执行后会自动提交。

不同点:

    1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。

       drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

    2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。

     注意:truncate 不能删除行数据,要删就要把表清空。

    3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存。

       以便进行进行回滚操作。

       truncate与不带where的delete :只删除数据,而不删除表的结构(定义)

    4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。

       如果要删除表定义及其数据,请使用 drop table 语句。

    5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。

    6、执行速度,一般来说: drop> truncate > delete。

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

     truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。 看到一个很形象的比喻:

     1. delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除。delete 是单杀,truncate 是团灭,drop 是把电脑摔了。

     2. delete 是 DML 语句,操作完以后还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚。delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。

     3. 执行的速度上,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。

小结:

  1. 当不再使用该表时,用drop。

  2. 当要保留该表删除表中的记录时,用truncate。

  3. 当要删除表中的部分记录时,用delete。

如有不足,欢迎留言指正。望不吝赐教。。。

发布了132 篇原创文章 · 获赞 1 · 访问量 7261

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/104635896
今日推荐