`
chengxianju
  • 浏览: 256618 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

truncate table和delete

 
阅读更多

TRUNCATE TABLE 和不带 WHERE 的 DELETE 功能是一样的,都是删除表中的所有数据,不过 TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除。

那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的:
1、要保留标识的情况下不能用 TRUNCATE TABLE,因为 TRUNCATE TABLE 会重置标识。
2、需要使用触发器的情况下不能使用 TRUNCATE TABLE ,它不会激发触发器。
3、对于由 FOREIGN KEY 约束引用的表(即主键所在的表,不是外键所在的表)不能使用 TRUNCATE TABLE。
4、对于参与了索引视图的表不能使用 TRUNCATE TABLE ,注意指索引视图,并非普通视图。

分享到:
评论

相关推荐

    TRUNCATE与 DELETE区别

    综上所述,TRUNCATE TABLE 和 DELETE 在性能、资源消耗和行为特性上都有明显的差异。在处理大量数据时,TRUNCATE 更快、更节省空间,但不适用于需要保留事务日志或维护标识列连续性的场景。而 DELETE 提供了更多的...

    oracle中truncate table后的数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...

    使用之MySQL官方文档翻译

    虽然 TRUNCATE TABLE 和 DELETE 语句都能达到清空表的效果,但在实际应用中两者有着本质的区别: 1. **性能差异**:TRUNCATE TABLE 实际上执行的操作是删除表再重新创建,这种方式在处理大数据量时相较于 DELETE ...

    Truncate Table的用法讲解

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

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

    - 相对于`TRUNCATE`和`DELETE`,`DROP`的操作更加强烈,因此在使用时需要格外小心。 - 使用`DROP`之后,与该表相关的所有对象都将变为无效状态。 #### 二、详细对比分析 1. **操作类型**: - `TRUNCATE`:属于...

    sql之truncate、delete与drop区别

    在SQL语言中,`TRUNCATE`、`DELETE` 和 `DROP` 是三个非常重要的数据操作语句,它们各自有着不同的用途和特性。理解这些差异对于数据库管理至关重要,特别是对于数据安全性和性能优化方面。 首先,`TRUNCATE` 语句...

    truncate,delete以及drop区别汇总

    `truncate`, `delete` 和 `drop` 是三种常见的 SQL 命令,它们在功能上有很大的差异。本文将详细探讨这三种命令之间的区别,并通过具体的场景分析来帮助读者更好地理解和使用这些命令。 #### 二、`truncate` 命令...

    delete,truncate和drop的区别

    ### delete,truncate和drop的区别详解 #### 一、概述 在数据库管理中,经常会遇到需要删除数据或表的情况。为了确保数据的准确性和安全性,理解`delete`、`truncate`和`drop`这三个命令的区别至关重要。本文将详细...

    Oracle给用户授权truncatetable的实现方案

    本文将探讨两种实现为用户授权`TRUNCATE TABLE`的方案,以确保安全性和可控性。 首先,我们来看一种较粗鲁且不安全的方法,即授予用户`DROP ANY TABLE`权限。这是因为`TRUNCATE`操作在Oracle中属于`DROP`语句的一...

    sqlserver2000触发器

    在某些特定情况下,TRUNCATE TABLE和DELETE语句可以达到相同的效果,即删除表中的所有数据,但TRUNCATE TABLE在效率和日志使用上具有优势。然而,它们并不完全互换,例如,TRUNCATE TABLE会重置标识列,不会激发...

    MySQL中truncate误操作后的数据恢复案例

    实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行数据写入。 这里为了简单说明,只拿弄一个简单的业务场景举例。 测试环境: Percona-...

    PostgreSQL TRUNCATE TABLE

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

    delete from 表名与truncate table 表名区别

    本文将详细讨论两种常见的删除方式:`DELETE FROM` 和 `TRUNCATE TABLE`,并分析它们各自的特点和适用场景,以便于选择最适合的数据清理方法。 1. 自动编号列的影响 当涉及带有自动编号(如 AUTO_INCREMENT 或 ...

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

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

    SQL学习资料附试题

    7. **TRUNCATE TABLE 和 DELETE**: - `TRUNCATE TABLE` 用于删除表的所有记录,但保留表结构,速度快于`DELETE FROM`。 - `DELETE FROM` 可以删除单个或多个记录,如果无`WHERE`子句则删除所有记录,速度较慢。 ...

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

    在Oracle数据库管理中,删除数据是一项常见的操作,通常有两种主要的方式:Delete语句和Truncate语句。这两种语句在功能上相似,都是用来移除表中的数据,但在执行效率和资源消耗上存在显著差异。 一、Delete语句 ...

    SQL2000自学教程

    了解如何使用ALTER TABLE进行表结构的修改,以及使用TRUNCATE TABLE和DELETE语句处理数据。 5. **数据查询**:熟练运用SELECT语句进行复杂的数据查询,包括联接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)、...

    SQLite Truncate Table

    在 SQLite 数据库中,虽然没有直接的 `TRUNCATE TABLE` 命令来清空一个表的所有数据,但是可以通过组合使用 `DELETE` 和 `VACUUM` 命令来达到相同的效果。这里我们将深入探讨如何在 SQLite 中实现类似 `TRUNCATE ...

Global site tag (gtag.js) - Google Analytics