• 注意:这里说的delete是指不带where子句的delete语句

  • 相同点:
    truncate和不带where子句的delete, 以及drop都会删除表内的数据

  • 不同点:
  1. truncate和 delete只删除数据不删除表的结构(定义)
    drop语句将删除表的结构、被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的
    存储过程/函数将保留,但是变为invalid状态.

  2. delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,
    执行的时候将被触发.
    truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发
    trigger.

  3. delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
    显然drop语句将表所占用的空间全部释放
    truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate
    会将高水线复位(回到最开始).

  4. 速度,一般来说: drop> truncate > delete

  5. 安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及.
    使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
    想删除表,当然用drop
    想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还
    是用delete.
    如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

  • 实际应用:
    delete from [table_name]; //删除所有数据
    truncate [table_name]; //将auto_increatement调制从0开始,实际就是从1开始

MySQL中drop,truncate 和delete的区别的更多相关文章

  1. MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别

    DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...

  2. SQL中的drop,truncate和delete的区别

    (1)   DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作.TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把 ...

  3. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

  4. drop,truncate与delete的区别

    注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 d ...

  5. mysql 清空表——truncate 与delete的区别

    清空表 truncate table [表名]: delete from [表名]: 注: truncate是整体删除(速度较快), delete是逐条删除(速度较慢). truncate不写服务器l ...

  6. mysql中 drop、truncate和delete的区别

    mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...

  7. mysql之drop、truncate和delete的区别

    今天在整理mysql数据库笔记的时候突然想到一个问题,就是drop.truncate和delete的区别,乍一看三者都是有删除的功能,但是具体来看还是有很多区别的.我先把这三个的作用简单说一下,有前辈 ...

  8. 数据库中truncate与delete的区别与联系

    昨天被问到truncate与delete的区别,truncate没用过,回去百度了一下,才知道还有这个一种语句. truncate table命令将快速删除数据表中的所有记录(保留数据表结构).这种快 ...

  9. drop、truncate和delete的区别 [转载]

    drop.truncate和delete的区别 本文转载自: https://www.cnblogs.com/zhizhao/p/7825469.html     (1)DELETE语句执行删除的过程 ...

随机推荐

  1. Leetcode 94

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  2. view_countInfo

    create view view_countInfo as SELECT     a.dwmch, b.dwbh, b.djbh, c.rq, c.shl, c.djbh AS Expr1, d.sp ...

  3. exec可以用来执行语句的

    set @sql='select * from '+@table print @sql exec(@sql)

  4. EBS 快速创建供应商的标准创建逻辑

    该页面经过了客户化,只保留了这三个字段. 点击应用时执行 oracle.apps.pos.supplier.webui.SuppCrtCO String s29 = (String)((OAAppli ...

  5. java并发编程:线程安全管理类--原子操作类--AtomicReference<V>

    1.类 AtomicReference<V> public class AtomicReference<V>extends Objectimplements Serializa ...

  6. Python 编码问题(十四)

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  7. 玩转X-CTR100 l STM32F4 l UCOS-III移植

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 概述 前后台系统 简单的小型系统设计一般是基于前后台 ...

  8. DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(二)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET Bootstrap v18.1 的新功能,快 ...

  9. QQ提示应用程序并行配置不正确,绿色版QQ不能运行解决方法

    出现此问题是因为您的计算机中缺少VC运行库导致的,建议您到互联网上下载相应的VC2005运行库,Windows 7请下载VC2008运行库安装到您的计算机中.如果您安装了运行库还是不行,建议您安装:( ...

  10. mysql 试图

    关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务.对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下.为了 ...