`
lemo
  • 浏览: 89530 次
  • 性别: 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从零开始

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

    浅析删除表的几种方法(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 ...

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

     truncate和不带where子句的delete,以及drop 都会删除表内的数据 第二:不同点: 1. truncate和delete只删除数据不删除表的结构(定义)  drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引...

    10道经典MySQL⾯试题

    1.drop,delete与truncate的区别 相同点: truncate和不带where⼦句的delete,以及drop都会删除表内的数据 不同点: truncate会清除表数据并重置id从1开始,delete就只删除记录,drop可以⽤来删除表或数据库并且将表所占...

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

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

    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 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面试题经典40问!(全)(含答案解释)

    MySQL面试题经典40问!(全) 1、什么是数据库事务?...10、 truncate、 delete 与 drop 区别? 11、 union 与 union all 的区别? 12、 group by 和 distinct 的区别? 13、 Blob 和 text 有什么区别?

    【数据面试系列】MySQL高频面试题及知识要点.pdf

    Q : truncate、delete与drop区别? Q : having和where的区别? Q : 解释外连接、内连接与自连接的区别? Q : LIKE 和 REGEXP 操作有什么区别? 2. MySQL数据类型 Q : 什么是非标准字符串类型? Q : 在 Mysql 中 ENUM...

    MySQL Truncate用法详解

    前言: 当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足...执行truncate语句需要拥有表的drop权限,从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create

    mysql5.1中文手册

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

    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)面试题(含答案).docx

    MyisAM和innodb的有关索引的疑问 innodb为什么要用自增id作为主键 ...说一说drop、delete与truncate的区别 什么叫视图?游标是什么? 什么是存储过程?用什么来调用? 内连接、自连接、外连接(左、右、全)

    MYSQL中文手册

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

Global site tag (gtag.js) - Google Analytics