`
zhoujiao_2010
  • 浏览: 8070 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

delete drop truncate 删除语法的区别

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

相关推荐

    oracle数据库删除数据Delete语句和Truncate语句的对比.docx

    Oracle 数据库删除数据 Delete 语句和 Truncate 语句的对比 Delete 语句和 Truncate 语句是 Oracle 数据库中两种常用的删除数据的方法,但是它们之间存在着明显的差异。 一、Delete 语句 Delete 语句是一种 DML...

    oracle数据库删除数据Delete语句和Truncate语句的使用比较

    在Oracle数据库中,删除表中数据有两种主要方式:Delete语句和Truncate语句。两者在功能上相似,但有着显著的区别,适用于不同的场景。 **Delete语句** Delete语句是一种灵活的数据删除方式,它可以有条件地删除...

    SQL中Truncate的用法

    本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用...

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

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

    MySQL_5[1].1_zh.chm中文版的mayql说明书

    Mysql 中文版 方便的查询mysql命令~~~ 13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 ...13.2.9. TRUNCATE语法

    MySQL Truncate用法详解

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

    PostgreSQL TRUNCATE TABLE

    与 `DELETE` 语句不同,`TRUNCATE TABLE` 不会逐行删除数据,而是直接移除整个表的数据段,因此在处理大量数据时,它的执行速度更快且更高效。 当你需要清空一张表,而又不想破坏表的定义或索引等元数据时,`...

    Truncate Table的用法讲解

    `TRUNCATE TABLE` 是 SQL 语言中一种用于删除表中所有数据的命令,但它与 `DELETE` 语句有着显著的区别。这篇文章将深入讲解 `TRUNCATE TABLE` 的使用方法,以及它与 `DELETE` 的对比,同时涵盖权限、适用场景及注意...

    Oracle删除语句.txt

    根据提供的文件信息,本文将详细解释Oracle数据库中的删除操作,包括DELETE、DROP以及TRUNCATE三个主要命令。这些命令在数据库管理中极为重要,能够帮助我们有效地管理数据表中的记录或整个表结构。 ### Oracle删除...

    SQL语句语法(最新)

    - **TRUNCATE语法**:用于清空表中的所有数据,比DELETE更快,但不触发删除事件。 - **UPDATE语法**:用于修改已存在的表中的数据。 #### MySQL实用工具语句 这些语句提供了额外的功能,如获取数据库信息、切换...

    Delete语句基于单表删除数据.pdf

    此外,可以使用`TRUNCATE`语句快速删除表的所有数据,但请注意,`TRUNCATE`不支持`WHERE`子句,且会重新设置表的自动增长字段。 ### 参考资料 1. 向旭宇, 秦姣华. SQL Server 2008 宝典[M]. 中国铁道出版社, 2011....

    SQL三种删除语句的用法比较

    本文将详细介绍`DROP`、`TRUNCATE`和`DELETE`三种SQL删除语句的区别及其应用场景。 #### 一、SQL中的基本语法 1. **DROP TABLE 表名称** - 示例:`DROP TABLE dbo.Sys_Test;` - **功能**:此命令用于删除指定的...

    mysql语法大全精讲(中文版)

    - TRUNCATE:快速清空表,不记录日志,比DELETE快。 - UPDATE:修改表中已存在的数据。 13.3 MySQL实用工具语句: - DESCRIBE:显示表结构,包括列名、数据类型等信息。 - USE:切换当前工作数据库。 13.4 事务...

    SQL语句语法

    - DELETE:从表中删除行。 - DO:执行SQL函数或表达式。 - HANDLER:提供低级表访问,类似于游标。 - INSERT:向表中插入新记录。 - LOAD DATA INFILE:快速批量导入数据到表中。 - REPLACE:如果行存在,则删除并...

    SQL Server删除表及删除表中数据的方法

    `TRUNCATE`操作比`DELETE`快,因为它不记录单个行的删除,而是删除整个表的数据页。因此,如果表包含标识列,执行`TRUNCATE`后,该列的值会重置到初始值,通常是1,允许你插入新行而不会冲突。 请注意,`DELETE`和...

Global site tag (gtag.js) - Google Analytics