drop、delete 与 truncate 区别



在这里插入图片描述


dropdeletetruncate 都是 MySQL 语句中与删除有关的语法, 但是他们的具体含义和用法还是有区别的. 接下来我们嘻嘻的看一下他们具体的用法:


☃️用法不同

  • drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用。
  • truncate (清空数据) : truncate table 表名 ,只删除表中的数据,再插入数据的时候自增长 id 又从 1 开始,在清空表中数据的时候使用。
  • delete(删除数据) : delete from 表名 where 列名=值,删除某一行的数据,如果不加 where 子句和 truncate table 表名作用类似。

truncate 和不带 where 子句的 delete、以及 drop 都会删除表内的数据,但是 truncate 和 delete 只删除数据不删除表的结构(定义),执行 drop 语句,此表的结构也会删除,也就是执行 drop 之后对应的表不复存在。

☃️属于不同的数据库语言

truncatedrop 属于 DDL(数据定义语言)语句,操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。而 delete 语句是 DML (数据库操作语言)语句,这个操作会放到 rollback segement 中,事务提交之后才生效。

DML 语句和 DDL 语句区别:

DML 是数据库操作语言(Data Manipulation Language)的缩写,是指对数据库中表记录的操作,主要包括表记录的插入、更新、删除和查询,是开发人员日常使用最频繁的操作。

DDL (Data Definition Language)是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。它和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。DDL 语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。

另外,由于select不会对表进行破坏,所以有的地方也会把select单独区分开叫做数据库查询语言 DQL(Data Query Language)。


☃️执行速度不同

一般来说:drop > truncate > delete(这个我没有实际测试过)。

delete 命令执行的时候会产生数据库的binlog日志,而日志记录是需要消耗时间的,但是也有个好处方便数据回滚恢复。
truncate 命令执行的时候不会产生数据库日志,因此比delete要快。除此之外,还会把表的自增值重置和索引恢复到初始大小等。
drop 命令会把表占用的空间全部释放掉。

Tips:我们应该更多地关注在使用场景上,而不是执行效率。


☃️事务支持

DDL 不支持事务 , DELETE 支持事务的, 所以我们在使用的时候要注意细节奥~~~


每一项技术深挖都是一个庞大的体系,学海无涯,共勉。

在这里插入图片描述



相关推荐

  1. MySQL:drop、deletetruncate区别

    2024-07-21 22:56:01       49 阅读
  2. 【SQL】delete truncate 命令的区别

    2024-07-21 22:56:01       52 阅读
  3. 【mysql】drop、deletetruncate区别

    2024-07-21 22:56:01       41 阅读
  4. drop、deletetruncate区别

    2024-07-21 22:56:01       24 阅读
  5. MySQL中drop、deletetrancate区别

    2024-07-21 22:56:01       42 阅读
  6. truncate、delete、drop的区别

    2024-07-21 22:56:01       48 阅读
  7. Oracle中DROP,TRUNCATE,DELETE区别

    2024-07-21 22:56:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 22:56:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 22:56:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 22:56:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 22:56:01       55 阅读

热门阅读

  1. 42、PHP 实现把二叉树打印成多行

    2024-07-21 22:56:01       15 阅读
  2. 防范缓冲区溢出攻击的方法

    2024-07-21 22:56:01       15 阅读
  3. 【如何使用Python编程】

    2024-07-21 22:56:01       22 阅读
  4. 【Python中的列表是什么】

    2024-07-21 22:56:01       19 阅读
  5. 数学建模--灰色关联分析法

    2024-07-21 22:56:01       19 阅读