delete:只删除数据,不删除结构。删除的数据存储在系统回滚段中,可以回滚。不会自动提交事务。

在InnoDB中,delete不会真的把数据删除,mysql实际上只是给删除的数据打了个标记为已删除,因此delete删除表中数据时,表文件在磁盘上所占用空间不会变小,存储空间不会被释放,只是把删除的数据行设置为不可见。下次插入数据时,可以重用这部分空间。

删除全表数据,对于MyISAM会立刻释放磁盘空间,InnoDB不会释放磁盘空间。带条件的删除,不管是InnoDB还是MyISAM都不会释放磁盘空间。delete操作以后,使用optimize table table_name会立刻释放磁盘空间。

delete操作时一行一行执行删除的,并同时记录该行的删除操作日志。

truncate:只删除数据,不删除结构。删除的数据操作立即生效,立刻释放磁盘空间,不可以回滚。自动提交事务。

truncate会重置自增的值为1,delete不会,但重启后会被置为1。

drop:删除表结构、约束、触发器、索引。依赖该表的存储过程和函数会保留,状态变为invalid。删除数据立即生效,立刻释放表空间,不能回滚。

速度:drop>truncate>delete

delete、truncate、drop的区别的更多相关文章

  1. truncate delete 与 drop的区别

    一张表几亿条数据.根据task_id删除几千万. delete删除后查询,发现查询速度还是没有变快.explain查看 rows并没有发生变化.查询速度肯定也不会变化.原因? truncate del ...

  2. What is the difference for delete/truncate/drop

    Same: delete/truncate/drop, all of them can support rollback/commit, the sample is as below: begin t ...

  3. truncate与delete 、drop的区别

    注意事项 1.在oracle中数据删除后还能回滚是因为它把原始数据放到了undo表空间. 2.DML语句使用undo表空间,DDL语句不使用undo,  而delete是DML语句,truncate是 ...

  4. delete/truncate/drop table的区别以及锁在这里的角色

    数据库删除语句 Drop/Delete/Truncate比较 Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名 ...

  5. truncate 、delete、drop的区别

    TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源 ...

  6. 关于sql 中delete, truncate,drop的理解与总结

    关于文章,本文是在网上查找资料整理而来,方便以后记忆 delete 命令删除的数据可以恢复, truncate 命令删除的数据是不可以恢复的,全删的那种 drop 命令删除的数据不可恢复,连表结构都删 ...

  7. sql中update,alter,modify,delete,drop的区别和使用(整理)(转)

    关于update和alter: 百度知道上关于update和alter有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜 ...

  8. sql中update,alter,modify,delete,drop的区别和使用(整理)

    关于update和alter: 百度知道上关于update和alter有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜 ...

  9. Sql语句中的truncate,delete,drop的区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 不同点: 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop 语句 ...

  10. oracle--delete truncate drop的区别

    一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...

随机推荐

  1. python性能测试工具locust

    1.概述: 1.我们对目前比较流行的几款压测工具进行了调研.Jmeter与LoadRunner基于多线程实现并发,多线程由操作系统决定,由于上下文切换频繁.内核调度频繁,单台机器很难产生大量线程并发. ...

  2. vi中将小写转换成大写字母

    VI阅读模式下连续按gUW可以将小写转换成大写

  3. matlab判断操作

    类型判断 1.查看变量类型时可用class,判断某变量的类型值:会生成0或1,1-匹配,0-不匹配 isa(Data,'double') isa(Data,'cell') 2.也可用如下. strcm ...

  4. wpf 查找指定类型的子元素

    public List<T> GetChildObjects<T>(DependencyObject obj, Type typename) where T : Framewo ...

  5. laravel service provider 1

    可以理解成分两步: 配置.register, 因为只有配置了才有被调用去register, 也许不配置直接在appserviceProvider里面可以直接生效.... service: 具体工作的类 ...

  6. got multiple values for keyword argument 'to_fields'

    django.db.models.fields.related.ForeignObject.__init__() got multiple values for keyword argument 't ...

  7. tif文件拼接+转换成netcdf格式

    2022-11-16 11:33 手上有若干个SRTM1V3.0 的高程数据,为HGT格式,需要将其拼接并转换成netcdf格式,以让ncl能够进行读取 步骤: gdal_translate A.hg ...

  8. guide, manual, tutorial之间的区别

    总结:一般而言,guide表示用户指南,提供简要的信息:manual表示用户手册,提供较为完整深入的说明:tutorial表示教程,提供详细的说明,侧重于给没有经验的人一步一步进行详细的指导.实际情况 ...

  9. PMP学习笔记 (一)

    1.第一部分 1.1 项目管理的价值观 责任.尊重.公正.诚实 1.2 项目和运营区别 项目:具有独特性.临时性.渐进明细性 运营:具有重复性和持续性 1.3 项目的产出:产品.服务或成果 1.4 滚 ...

  10. java学习流程(java学习之路)

    Java学习流程 Java SE(18-20天) 1.计算机基础 2.博客的重要性 3Java基础语法 4.流程控制和方法 5 .数组 6 .面向对象 7 .异常 8 .常用类 9 .集合框架 10 ...