SQL Truncate用法详解

SQL Truncate用法详解

简略表中的数据的本领有delete,truncate, 个中TRUNCATE TABLE用来简略表中的一切行,而不记载单个行简略操纵。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句一致;然而,TRUNCATE TABLE 速率更快,运用的体例资源和工作日记资源更少。

Truncate是一个不妨赶快清空材料表内一切材料的SQL语法。而且能对准具备机动递加值的字段,做计数重置归零从新计划的效率。

1.truncate运用语法

truncate的效率是清空表大概说是截断表,只能效率于表。truncate的语法很大略,反面径直跟表名即可,比方: truncate table tbl_name 大概 truncate tbl_name 。

实行truncate语句须要具有表的drop权力,从论理上讲,truncate table一致于delete简略一切行的语句或drop table而后再create table语句的拉拢。为了实行高本能,它绕过了简略数据的DML本领,所以,它不许回滚。纵然truncate table与delete一致,但它被分门别类为DDL语句而不是DML语句。

2.truncate与drop,delete的比较

上头说过truncate与delete,drop很一致,本来这三者仍旧与很大的各别的,底下大略比较下三者的异同。

truncate与drop是DDL语句,实行后没辙回滚;delete是DML语句,可回滚。

truncate只能效率于表;delete,drop可效率于表、视图等。

truncate会清空表中的一切行,但表构造及其牵制、索引等维持静止;drop会简略表的构造及其所依附的牵制、索引等。

truncate会重置表的自升值;delete不会。

truncate不会激活与表相关的简略触发器;delete不妨。

truncate后会使表和索引所占用的空间会回复到初始巨细;delete操纵不会缩小表或索引所占用的空间,drop语句将表所占用的空间全开释掉。

3.truncate运用场景及提防事变

经过前方引见,咱们很简单得出truncate语句的运用场景,即该表数据实足不须要时不妨用truncate。即使想简略局部数据用delete,提防带上where子句;即使想简略表,固然用drop;即使想保持表而将一切数据简略且和工作无干,用truncate即可;即使和工作相关,大概想触发trigger,仍旧用delete;即使是整治表里面的碎片,不妨用truncate而后再从新插入数据。

不管还好吗,truncate表都是高危操纵,更加是在消费情况要越发提防,底下列出几点提防事变,蓄意大师运用时不妨做下参考。

truncate没辙经过binlog回滚。

truncate会清空一切数据且实行速率很快。

truncate不许对有外键牵制援用的表运用。

实行truncate须要drop权力,不倡导给账号drop权力。

实行truncate前确定要反复查看确认,最佳提早备份下表数据。

分享到 :

Leave a Reply

Your email address will not be published. Required fields are marked *