`
lemo
  • 浏览: 91629 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL中DROP,TRUNCATE 和DELETE的区别

阅读更多
注意:这里说的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,再重新导入/插入数据/
分享到:
评论

相关推荐

    详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始

    在MySQL数据库管理中,删除数据是一项常见的操作,但有三种不同的方法可以实现这一目标:DROP、TRUNCATE和DELETE。理解它们之间的区别至关重要,因为它们各自具有不同的特性和使用场景。 1. **DROP命令**: - DROP...

    浅析删除表的几种方法(delete、drop、truncate)

    您可能感兴趣的文章:数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)drop,truncate与delete的区别详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始浅析drop user与delete from ...

    MySQL删除表操作实现(delete、truncate、drop的区别)

    本文主要讲mysql中三种删除表的操作,delete语句、truncate语句以及drop语句的区别: 简介 delete 1、删除整张表的数据: delete from table_name; 2、删除部分数据,添加where子句: delete from table_name ...

    delete、truncate、drop的区别以及该如何选择

    前言 上周同事小姐姐问我:“哈哥你看,我发现...咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不同。 一、从执行速度上来说 drop > truncate >> DELETE 二

    详解SQL中drop、delete和truncate的异同

    在SQL中,`DROP`、`DELETE`和`TRUNCATE`都是用于处理表中数据的命令,但它们之间存在显著的区别。以下是这些命令的详细解释: 1. **相同点**: - 三者都能删除表内的数据。 - `TRUNCATE`和不带`WHERE`子句的`...

    MySQL篇(带答案).pdf

    drop、truncate 和 delete 的主要区别在于: * delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 * truncate TABLE 则一次性地从表中删除...

    MySQL Truncate用法详解

    - Truncate只适用于表,而Delete和Drop可以作用于表、视图等数据库对象。 - Truncate清空表后保留表结构,但重置自增列的值;Delete删除数据但保留自增列状态;Drop则完全删除表及其依赖项。 - Truncate不触发与表...

    MySQL:删除数据库的实用命令中

    DROP、DELETE 和 TRUNCATE 命令都是 MySQL 中删除数据库或表格中的数据的命令,但它们之间有所区别。DROP 命令可以删除整个数据库或表格,DELETE 命令可以删除表格中的某些数据,TRUNCATE 命令可以删除表格中的所有...

    mysql面试题 包含 初级 中级 高级 各级别知识点.rar

    drop、truncate、 delete区别 数据库三范式是什么? union和union all有什么不同? char、varchar2、varchar有什么区别? 合并查询有哪些? SQL语句执行顺序 null的含义 MySQL、SqlServer、oracle写出字符存储...

    mysql面试题 mysql面试题mysql面试题

    本文总结了MySQL面试题中的知识点,包括索引、MyISAM和InnoDB、事务、数据库设计、索引使用注意事项、CHAR和VARCHAR、NOW()和CURRENT_DATE()、视图、游标和存储过程、drop、delete和truncate等。

    MySQL删除表数据 MySQL清空表命令 3种方法

    同时,如果你的表有外键约束,`TRUNCATE` 和 `DELETE` 都可能因级联删除而影响到其他表。此外,如果你的表有触发器,`DELETE` 操作会触发这些触发器,而 `TRUNCATE` 不会。 在选择适合的删除方法时,要考虑数据量、...

    MySQL 5.1中文手冊

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    Mysql考试题库及答案

    **解析**: 在MySQL中,CHAR和VARCHAR都是字符串类型,区别在于CHAR指定长度后会自动补空格,而VARCHAR则不会。INT是一种整数类型。因此正确答案为D。 #### 2. 创建数据库 **题目**: 在 MySQL 中,以下哪个命令可以...

    MySQL的删除步骤

    MySQL是世界上最流行的开源关系型数据库管理系统之一,其删除步骤涵盖了从简单到复杂的多个层次,包括数据、表、数据库以及在操作系统中的彻底卸载。这里我们将深入探讨这些删除过程,并特别关注如何安全地处理...

    delete from 表名与truncate table 表名区别

    在数据库管理中,`DELETE` 和 `TRUNCATE TABLE` 是两种常见的用于清空数据表的语句,但它们在具体的行为和效果上存在显著差异。以下是对这两个语句的详细解析: 1. **对自动编号列的影响**: - `DELETE` 语句会...

    mysql中造3千条数据(3种方法)

    MySQL 中造 3000 条数据的三个方法 MySQL 是一种非常流行的关系型数据库管理系统,它提供了多种方式来快速生成大量数据。本文将介绍三种方法来在 MySQL 中造 3000 条数据。 方法一:使用存储过程 存储过程是一种...

Global site tag (gtag.js) - Google Analytics