当前位置: 首页 > news >正文

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

目录

    • drop、truncate、delete的区别
    • 1、执行速度
    • 2、SQL执行命令分类
    • 3、回滚
    • 4、自增初始值

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 不会重置自增列。
转载链接

相关文章:

  • 力扣sql基础篇(十)
  • Django REST framework--Swagger API文档生成器
  • 索引(index)
  • UPerNet:Unified Perceptual Parsing for Scene Understanding论文解读
  • ​力扣解法汇总1814. 统计一个数组中好对子的数目
  • 力扣中SQL刷题
  • Spring-Boot 操作 ElasticSearch 6.x 详解
  • “图解”LeetCode 1813. 句子相似性 III
  • 我的开源项目之Matlab/Octave转Python工具(motopy)
  • 一个高效的通用光学卫星数据正射校正程序
  • 工作和学习遇到的技术问题
  • kafka常用命令大全
  • Python数据库操作 ---- pymysql教学
  • 【互联网大厂机试真题 - 科大讯飞】
  • Wider Face+YOLOV7人脸检测
  • 点击化学Alkynyl Myristic COOH,82909-47-5,13-十四炔酸
  • 基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作
  • 【算法基础】1.8离散化
  • Mysql导出100万条数据,9种导出方法优缺点和速度、文件大小测试
  • 【华为OD机试真题2023 JAVA】Linux发行版的数量