`

Truncate table 清除表内容

 
阅读更多
TRUNCATE TABLE

删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。

语法
    [ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ]
参数
database_name
数据库的名称。
schema_name
表所属架构的名称。
table_name
要截断的表的名称,或要删除其全部行的表的名称。

备注
与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:

所用的事务日志空间较少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一个项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。
使用的锁通常较少。
当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。
如无例外,在表中不会留有任何页。
执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。若要删除表定义及其数据,请使用 DROP TABLE 语句。
如果表包含标识列,该列的计数器重置为该列定义的种子值。如果未定义种子,则使用默认值 1。若要保留标识计数器,请使用 DELETE。
限制
不能对以下表使用 TRUNCATE TABLE:
由 FOREIGN KEY 约束引用的表。(您可以截断具有引用自身的外键的表。)
参与索引视图的表。
通过使用事务复制或合并复制发布的表。
对于具有以上一个或多个特征的表,请使用 DELETE 语句。
TRUNCATE TABLE 不能激活触发器,因为该操作不记录各个行删除。

示例:


USE AdventureWorks;
GO
SELECT COUNT(*) AS BeforeTruncateCount
FROM HumanResources.JobCandidate;
GO
TRUNCATE TABLE HumanResources.JobCandidate;
GO
SELECT COUNT(*) AS AfterTruncateCount
FROM HumanResources.JobCandidate;
GO
分享到:
评论

相关推荐

    ZenCart常用SQL命令

    这里的每一个`TRUNCATE TABLE`命令都会清空指定表中的所有数据,并重置自增字段的起始值(如果该表有自增字段的话)。与使用`DELETE FROM`语句相比,`TRUNCATE TABLE`在执行效率上更高,因为它不涉及记录删除日志的...

    truncate 表恢复

    具体来说,`TRUNCATE`操作的原理在于它**并不会逐个清除用户数据块上的数据**,而是**仅重置数据字典和元数据块上的元数据**(例如存储断头和扩展段图)。这意味着,虽然从逻辑上看表已经被清空,但实际上数据块中的...

    Truncate表恢复(无备份情况下)

    当执行`TRUNCATE TABLE`命令时,并非直接清除用户数据块上的所有数据,而是重置数据字典和元数据块上的元数据(例如存储断头和扩展段图)。这意味着,尽管表中的数据已被清空,但数据块本身并没有被物理删除,而是被...

    SQL Server误区30日谈 第19天 Truncate表的操作不会被记录到日志

    总的来说,Truncate Table在SQL Server中是一种高效的数据清除手段,它通过批量释放数据页并在后台处理来优化性能,但这一操作仍然会在日志中留下记录,只是记录的内容与DELETE不同。了解这一点对于理解SQL Server的...

    truncate 功能设计文档1

    在数据库管理领域,Truncate Table是一项常用的操作,它用于快速删除表中的所有数据,同时保留表结构。本文将深入探讨Cedar数据库中的Truncate功能设计,包括需求分析、适用场景、功能简述以及设计思路。 1. 需求...

    oracle truncate恢复

    在Oracle数据库管理中,`TRUNCATE`命令是一种高效的数据清除方式,常用于快速清空表中的所有数据。然而,与`DELETE`语句不同的是,`TRUNCATE`操作是非事务性的且无法通过普通的ROLLBACK机制撤销。因此,在执行`...

    Oracle恢复truncate删除表的数据.docx

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,与`DELETE`语句不同,`TRUNCATE`不记录任何删除操作,因此它不能通过闪回查询(Flashback Query)来恢复。当你执行`TRUNCATE TABLE`后,数据...

    truncate,delete以及drop区别汇总

    `truncate table` 命令用于快速清空表中的所有数据,但保留表结构不变。它是一种快速的数据清除方式,通常比 `delete` 命令更快,因为它不记录任何删除操作的日志信息。 **2. 特点** - **速度快**:无论表的大小...

    SQL Server中TRUNCATE事务回滚操作方法

    接下来,我们执行`TRUNCATE TABLE TruncateTabel`命令,这将清空表`TruncateTabel`的所有数据: ```sql TRUNCATE TABLE TruncateTabel; ``` 在回滚事务之前,我们可以检查表是否已经清空: ```sql SELECT * FROM ...

    Oracle恢复truncate删除表的数据.pdf

    在Oracle数据库中,`TRUNCATE TABLE`命令用于删除表中的所有数据,但保留表结构。与`DELETE`语句不同,`TRUNCATE`不记录任何删除操作,因此无法通过常规的事务回滚来恢复数据。然而,Oracle提供了一些高级恢复功能,...

    SQL清空所有表

    这条命令会遍历当前数据库中的所有表,并对每个表执行`TRUNCATE TABLE`操作,从而清空所有表的数据。 ##### 3. 注意事项 - `TRUNCATE TABLE`操作是不可逆的,因此在执行前一定要确认是否真的需要清空表数据。 - ...

    关于清空目录,产品及属性的sql语句

    - **TRUNCATE TABLE categories_description;** - **功能**:删除`categories_description`表中的所有数据。 - **应用**:通常用于清理所有商品类别的描述信息。 - **TRUNCATE TABLE categories;** - **功能**:...

    MySQL Truncate用法详解

    Truncate操作非常直接,其基本语法是`TRUNCATE TABLE table_name`,如`TRUNCATE TABLE students`。这个命令将彻底清除指定表的所有数据,但保留表结构、字段、索引和约束。 2. Truncate与Drop、Delete的对比: - ...

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

    `TRUNCATE TABLE table_name`会清除表中的所有数据,但保留表的结构。与`DELETE`不同,`TRUNCATE`不触发表上的触发器,且删除速度快于`DELETE`,因为它不涉及行级锁定,而是释放整个数据页。如果表中有自增ID列,`...

    oracle 在删除表,表空间,用户时 如何释放磁盘空间.pdf

    - **删除分区**:要删除分区表的一个或多个分区,可以使用`ALTER TABLE 表名称 TRUNCATE PARTITION 分区名称`来清空分区,或者使用`ALTER TABLE 表名称 DROP PARTITION 分区名称`来完全删除分区及其中的数据。...

    sql_table_self

    TRUNCATE TABLE test; -- 清除表中的所有数据,并释放这些数据占用的空间,但保留表结构 DROP TABLE test; -- 完全删除表及其所有数据 ``` ### 修改操作(Update) 修改操作涉及到更新表结构或表中的数据。 #### ...

    magento后台批量删除或更改产品属性[参考].pdf

    1. `TRUNCATE TABLE `catalog_product_bundle_option`;`: 这条命令清空了与捆绑产品选项相关的表,用于存储捆绑产品配置。 2. `TRUNCATE TABLE `catalog_product_bundle_option_value`;`: 清除捆绑产品选项值,这与...

    SQL--清空所有表的数据

    在描述部分,给出了一段SQL脚本,该脚本通过声明游标和变量的方式,循环遍历数据库中的所有表,并对每个表执行`TRUNCATE TABLE`操作,从而实现批量清空数据的目的。 #### 代码解析 1. **声明变量和游标**: ```...

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

    在示例中,当我们执行 `TRUNCATE TABLE Table1`,虽然 `Table1` 中的所有数据都被清除,但触发器 `TG_Table1` 并未被激活,因此 `Table2` 的数据没有被删除。此外,`TRUNCATE` 操作不会像 `DELETE` 那样在日志中记录...

    mysql表的清空、删除和修改操作详解

    不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。 delete的效果有点像将...

Global site tag (gtag.js) - Google Analytics