mysql-删除方式对比-drop、truncate、delete

drop、truncate、delete的区别

区别droptruncatedelete
语法drop(丢弃数据): DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]truncate (清空数据) : truncate table 表名delete(删除数据) :delete from table_name [where…] [order by…] [limit…]
执行速度较快
命令分类DDLDDLDML
删除对象删除整张表和表结构,以及表的索引、约束和触发器只删除表数据,表的结构、索引、约束等会被保留。只删除表的全部或部分数据,表结构、索引、约束等会被保留。
删除条件(where)不支持不支持支持
回滚不支持不支持支持
自增初始值-重置不重置

1、执行速度

delete 是逐行执行的,并且在执行时会把操作日志记录下来,以备日后回滚使用,所以 delete 的执行速度是比较慢的;
而 truncate 的操作是先复制一个新的表结构,再把原先的表整体删除,所以它的执行速度居中,而 drop 的执行速度最快。

2、SQL执行命令分类

SQL 分为以下 3 类:

  • DDL【DataDefinitionLanguage】数据定义语言,用来维护存储数据的结构代表指令: create、drop、alter、truncate。
  • DML【DataManipulationLanguage】数据操纵语言,用来对数据进行操作代表指令:insert,delete,update,
  • DML中又单独分了一个 DQL,数据查询语言,代表指令是 select。
  • DCL【DataControlLanguage】数据控制语言,主要负责权限管理和事务代表指令:grant,revoke,commit。
    其中 delete 属于 DML,而 truncate 和 drop 属于 DDL。

PS:truncate 是先复制一个新的表结构,再把原有旧表结构和数据一起删除,所以它属于数据定义语言 DDL,而非数据操纵语言 DML。

3、回滚

truncate 和 drop 是立即执行,且不能恢复;而 delete 会走事务,可以撤回和恢复。

4、自增初始值

truncate 会重置自增列为 1,而 delete 不会重置自增列。
转载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值