SQL中Truncate的用法

本文导读:删除表中的多寡的章程有delete,truncate, 在那之中TRUNCATE
TABLE用于删除表中的装有行,而不记录单个行删除操作。TRUNCATE TABLE 与从不
WHERE 子句的 DELETE 语句看似;可是,TRUNCATE TABLE
速度更快,使用的系统能源和业务日志能源更少。下边介绍SQL中Truncate的用法

 

当你不再须求该表时, 用 drop;当您仍要保留该表,但要删除全体记录时,
用 truncate;当您要去除部分记录时(always with a WHERE clause), 用
delete.

 

Truncate是贰个力所能及很快清空资料表内全体素材的SQL语法。并且能针对全数自动递增值的字段,做计数重置归零重新计算的职能。

 

一、Truncate语法

[ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ]
 

参数

database_name
数据库的名目。

schema_name
表所属架构的称号。

table_name
要截断的表的称谓,或要删减其全方位行的表的名称。

 

二 、Truncate使用注意事项

 

壹 、TRUNCATE TABLE 在功用上与不带 WHERE 子句的 DELETE
语句相同:二者均删除表中的成套行。但 TRUNCATE TABLE 比 DELETE
速度快,且使用的体系和业务日志能源少。

 

② 、DELETE
语句每一回删除一行,并在工作日志中为所删除的每行记录一项。TRUNCATE TABLE
通过自由存款和储蓄表数据所用的多少页来删除数据,并且只在事情日志中记录页的自由。

 

③ 、TRUNCATE TABLE
删除表中的有所行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。假诺想保留标识计数值,请改用
DELETE。倘诺要删减表定义及其数量,请使用 DROP TABLE 语句。

 

四 、对于由 FOREIGN KEY 约束引用的表,不可能动用 TRUNCATE
TABLE,而应采用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE
不记录在日记中,所以它不能够激活触发器。

 

⑤ 、TRUNCATE TABLE 不能够用于加入了索引视图的表。

 

⑥ 、对用TRUNCATE TABLE删除数据的表上扩展数据时,要接纳UPDATE
STATISTICS来保证索引音讯。

 

七 、假设有ROLLBACK语句,DELETE操作将被撤废,但TRUNCATE不会吊销。

 

 

 

三 、不能对以下表使用 TRUNCATE TABLE

 

一 、由 FOREIGN KEY 约束引用的表。(您能够截断具有引用作者的外键的表。)

二 、到场索引视图的表。

叁 、通过应用工作复制或联合复制宣布的表。

④ 、对于具有以上1个或五天性子的表,请使用 DELETE 语句。

五 、TRUNCATE TABLE 不可能激活触发器,因为该操作不记录各种行删除。

 

 

 

四、TRUNCATE、Drop、Delete区别

 

 
1.drop和delete只是删除表的数据(定义),drop语句将删除表的组织、被依赖的约束(constrain)、触发器
(trigger)、索引(index);重视于该表的积存进程/函数将保存,然而变为invalid状态。

2.delete语句是DML语言,那个操作会放在rollback
segement中,事物提交后才生效;假如有对应的触发器(trigger),执行的时候将被触发。truncate、drop是DDL语言,操作后即
生效,原数据不会放到rollback中,不能够回滚,操作不会触发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,再重新导入、插入数据。

6.delete是DML语句,不会自行提交。drop/truncate都以DDL语句,执行后会自动提交。

七 、drop一般用来删除全体性数据
如表,格局,索引,视图,完整性限制等;delete用于删除局地性数据
如表中的某一元组

捌 、DROP把表结构都删了;DELETE只是把数据清掉

⑨ 、当您不再必要该表时, 用 drop;当你仍要保留该表,但要删除全部记录时,
用 truncate;当您要删减部分记下时(always with a WHERE clause), 用
delete.

相关文章