登录
首页 >  数据库 >  MySQL

Truncate

来源:SegmentFault

时间:2023-02-16 15:20:28 470浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《Truncate》,介绍一下MySQL,希望对大家的知识积累有所帮助,助力实战开发!

truncate 语法

truncate直译为截断,作用是清空表,且只能作用于表;
语法为:

truncate table tbl_name
truncate tbl_name

truncate需拥有表的drop权限,从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create table语句的组合。为了实现高性能,它绕过了删除数据的DML方法,因此,它不能回滚。尽管truncate table与delete相似,但它被分类为DDL语句而不是DML语句。

truncate & drop & delete

  • truncate & drop 是DDL语句,执行后无法回滚;delete 是DML语句,可回滚。
  • truncate 只能作用于表;delete & drop 可作用于表、视图等。
  • truncate 会清空表中的所有行,但表结构及其约束、索引等保持不变;drop 会删除表的结构及其所依赖的约束、索引等。
  • truncate 会重置表的自增值;delete 不会。
  • truncate 不会激活与表有关的删除触发器;delete 可以。
  • truncate 后会使表和索引所占用的空间会恢复到初始大小;delete 操作不会减少表或索引所占用的空间,drop 语句将表所占用的空间全释放掉。

truncate 使用场景

面临大表时,如果想删除所有数据可以用truncate;如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据

truncate 注意事项

  • truncate 无法通过binlog回滚
  • truncate 会清空所有数据且执行速度很快
  • truncate 不能对有外键约束引用的表使用
  • truncate 需要drop权限,不建议给账号drop权限
  • truncate 前一定要再三检查确认,最好提前备份下表数据

今天带大家了解了MySQL的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>