Truncate用法详解

序言:

在我们要想清除某张表时,通常会应用truncate句子。大多数情况下大家只关注可否满足需求,而没去想这种句子的应用情景及常见问题。这篇文章内容关键详细介绍truncate句子的操作方法及常见问题。

1.truncate应用英语的语法

truncate的功效是清空表也就是说是断开表,只有功效于表。truncate的英语的语法非常简单,后边立即跟表名就可以,比如:truncatetabletbl_name或是truncatetbl_name。

实行truncate句子必须有着表的drop管理权限,从逻辑性上讲,truncatetable类似delete删掉全部行的句子或droptable随后再createtable句子的组成。为了更好地完成性能卓越,它绕开了删掉数据信息的DML方式,因而,它不可以回退。虽然truncatetable与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前一定要再三查验确定,最好是提早备份数据下表数据信息。

20200403140505714.jpeg


转载请说明出处内容投诉
八爷源码网 » Truncate用法详解