美文网首页MySQL技术
Truncate用法详解

Truncate用法详解

作者: MySQL技术 | 来源:发表于2020-04-03 14:01 被阅读0次

前言:

当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。

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前一定要再三检查确认,最好提前备份下表数据。

相关文章

  • Truncate用法详解

    前言: 当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的...

  • 重置MySQL数据表

    重置mysql 数据表,id重置 使用mysql的truncate命令,用法:truncate table 表名;...

  • truncate命令

    树 1. truncate用法 truncate 用来清空一个数据库表的所有数据。 2.官方解释 Logicall...

  • LiveData

    LiveDataBus实现原理#用法详解#LiveData扩展 LiveDataBus实现原理#用法详解#Live...

  • IOS学习(13)-UITextView

    UITextView详解iOS开发系列之四 – UITextView 用法小结UITextView控件的用法详解

  • Retrofit 入门

    Retrofit用法详解 参考:Retrofit 官方APIRetrofit用法详解(入门看这篇就够了) 一、简介...

  • 结构体对齐方式

    #pragma pack()用法详解

  • EventBus 3.0的用法详解(二)

    EventBus 3.0的用法详解(一) 前一篇文章简单介绍了EventBus 3.0的用法,现在是时候详解其用法...

  • OpenCV Mat类详解和用法

    OpenCV Mat类详解和用法 OpenCV Mat类详解和用法 [图片上传失败...(image-74f519...

  • IOS--UILabel 用法详解

    IOS--UILabel 用法详解

网友评论

    本文标题:Truncate用法详解

    本文链接:https://www.haomeiwen.com/subject/zuuhphtx.html