`

truncate与delete的区别

阅读更多

truncate,delete,drop的异同点

 

说明:本文摘自oracle技术用户讨论组    

注意:这里说的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,再重新导入/插入数据

分享到:
评论

相关推荐

    TRUNCATE与 DELETE区别

    在数据库管理中,TRUNCATE 和 DELETE 是两种用于删除数据的方法,它们各有其特定的适用场景和优缺点。本文将详细对比分析这两种操作的区别。 首先,TRUNCATE TABLE 是一种快速删除表中所有数据的方式,它并不记录每...

    sql中 truncate 和 delete 有什么区别

    "SQL中truncate和delete的区别" SQL中truncate和delete是两种不同的数据删除方式,它们之间存在许多关键的区别。本文将详细阐述truncate和delete的不同之处,以便读者更好地理解和选择这两种删除方式。 -delete的...

    sql之truncate、delete与drop区别

    与 `TRUNCATE` 不同,`DELETE` 操作会记录在事务日志中,因此可以被回滚,支持数据恢复。此外,`DELETE` 会触发表上的触发器和检查约束,这可能会对性能产生影响,尤其是在处理大量数据时。 `DROP` 语句则是用来...

    truncate,delete以及drop区别汇总

    ### truncate, delete 以及 drop 区别汇总 #### 一、概述 在数据库管理中,经常需要对数据表进行各种操作,比如删除表中的数据、删除整个表等。`truncate`, `delete` 和 `drop` 是三种常见的 SQL 命令,它们在功能...

    sql之truncate_、delete与drop区别.pdf

    ### SQL之TRUNCATE、DELETE与DROP的区别 #### 概述 在SQL中,`TRUNCATE`、`DELETE`和`DROP`都是用于管理数据库表的重要命令,但它们之间存在显著的区别。本文将深入探讨这三种命令的功能、用法及其应用场景。 ####...

    truncate,delete,drop的异同点

    在数据库管理中,`TRUNCATE`, `DELETE`, 和 `DROP` 是三种常见的数据操作语言(DML)与数据定义语言(DDL)。这三种命令都有助于管理和调整数据库表结构及其中的数据,但它们之间的差异十分重要。 #### 1. TRUNCATE...

    数据库中truncate,delete,drop语句的比较

    ### 数据库中truncate、delete与drop语句的深入解析 #### 一、基本概念与应用场景 在数据库管理中,`truncate`、`delete`与`drop`是三种常见的SQL语句,它们各自拥有不同的功能与用途,对于初学者来说,区分这三种...

    drop,truncate与delete的区别

    注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被...

    dct233#blog#03-truncate和delete1

    truncate 和 delete 清空表数据的区别:truncate 是整体删除(速度较快),delete 是逐条删除(速度较慢);truncate 不激活

    秒懂drop、truncate和delete的区别

    `DROP`、`TRUNCATE`和`DELETE`是SQL中用于删除数据的三个关键命令,它们各自有不同的特性和应用场景。以下是它们的详细对比和解释: 1. **DELETE语句**: DELETE是一种数据操纵语言(DML),这意味着它涉及到对...

    实例理解SQL中truncate和delete的区别

    本文以一个简单实例为大家介绍了SQL中truncate和delete的区别,帮助大家理解,具体内容如下 ---创建表Table1 IF OBJECT_ID('Table1','U') IS NOT NULL DROP TABLE Table1 GO CREATE TABLE Table1 (ID INT NOT NULL,...

    SQL语句中----删除表数据drop、truncate和delete的用法

    SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完

    详解Truncate delete drop三者的区别

    详细阐述了Oracle中三种删除的方式truncate,drop和delete三者的区别和联系.

    说一说drop、delete与truncate的区别

    drop、delete、truncate都表示删除,但是三者有一些差别: Delete用来删除表的全部或者一部分数据行,执行delete之后,用户需要提交(commmit)或者回滚(rollback)来执行删除或者撤销删除。会触发这个表上所有的...

    SQL删除语句DROP、TRUNCATE、 DELETE 的区别

    在SQL中,删除数据有三种主要方式:DROP、TRUNCATE和DELETE。这些语句各自有不同的特性和适用场景,理解它们的区别对于有效地管理和维护数据库至关重要。 1. **DROP语句**: - DROP TABLE语句用于彻底删除一个表...

    9.1.3 drop,delete与truncate的区别.md

    9.1.3 drop,delete与truncate的区别

Global site tag (gtag.js) - Google Analytics