MySQL数据库中Delete语句和Truncate table 语句的区别

1、在MySQL中有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE 语句。DELETE语句可以通过where 对要删除的记录进行选择。而使用TRUNCATE TABLE 将删除表中的所有记录。因此,DELETE语句更灵活。

 

2、在功能上,truncate是清空一个表的内容,它相当于 delete  from table_name。delete是DML(Data Manipulation Language 数据操纵语言)操作,truncate是DDL(Data Definition Languages 数据定义语言);因此,用delete删除整个表的数据时,会产生大量的roolback,占用很多的rollback segments,而truncate不会。

3、如果要删除表中的部分记录,只能使用DELETE语句。

4、delete from  table1 where;

        如果delete不加where 子句,那么它和truncate  table是一样的,但他们有点不同,那就是delete可以返回被删除的记录数,而truncate table返回的是0。在内存中,用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后得使用,另外它是“假象”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统,它也就不能恢复了。

        而truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,不能够恢复

5、delete和 truncate  table的最大区别是delete 可以通过where语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而truncate table 无法删除指定的记录,而且不能返回被删除的记录,但它执行的非常快。

6、truncate 只能对 table,delete可以是 table,view。

7、truncate和delete只删除数据,而drop则删除整个表(结构和数据)。

8、truncate之后的自增字段从头开始计数了,而delete的扔保留原来的最大值。

9、速度,一般来说 drop>;truncate >;delete

10、安全性:小心使用drop和truncate,尤其是没有备份的时候,否则苦都来不及。

        使用上,想删除部分数据行用delete,注意带上where子句;想删除表,当然用drop;想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关或者想触发trigger,还是用delete。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值