百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> SQL中Truncate的用法
分享文章到:

SQL中Truncate的用法

发布时间:05/13 来源:未知 浏览: 关键词:

本文导读:删除表中的数据的要领有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运用注意事项

1、TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句雷同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且运用的系统和事务日志资源少。 

2、DELETE 语句每次删除一行,并在事务日志中为所删除的每行记载一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记载页的释放。

3、TRUNCATE TABLE 删除表中的所有行,但表构造及其列、束缚、索引等维持不变。新行标识所用的计数值重置为该列的种子。要是想保存标识计数值,请改用 DELETE。要是要删除表定义及其数据,请运用 DROP TABLE 语句。 

4、关于由 FOREIGN KEY 束缚援用的表,不能运用 TRUNCATE TABLE,而应运用不带 WHERE 子句的 DELETE 语句。因为 TRUNCATE TABLE 不记载在日志中,所以它不能激活触发器。

5、TRUNCATE TABLE 不能用于参与了索引视图的表。 

6、对用TRUNCATE TABLE删除数据的表上添加数据时,要运用UPDATE STATISTICS来保护索引信息。

7、要是有ROLLBACK语句,DELETE操纵将被撤销,但TRUNCATE不会撤销。 

三、不能对下列表运用 TRUNCATE TABLE

1、由 FOREIGN KEY 束缚援用的表。(您可以截断拥有援用本身的外键的表。)

2、参与索引视图的表。

3、通过运用事务复制或合并复制发表的表。

4、关于拥有以上一个或多个特征的表,请运用 DELETE 语句。

5、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语句,施行后会主动提交。

7、drop个别用于删除整体性数据 如表,模式,索引,视图,完备性限定等;delete用于删除部分性数据 如表中的某一元组

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

9、当你不再需要该表时, 用 drop;当你仍要保存该表,但要删除所有记载时, 用 truncate;当你要删除局部记载时(always with a WHERE clause), 用 delete.

总结

以上所述是小编给大家介绍的SQL中Truncate的用法,但愿对大家有所帮忙,要是大家有任何疑难请给我留言,小编会及时回复大家的。在此也非常谢谢大家对我们网站的支撑!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有157人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板