Truncate用法详解[通俗易懂]
前言:
当我们想要清空某张表时,往往会使用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前一定要再三检查确认,最好提前备份下表数据。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200841.html原文链接:https://javaforall.cn
相关文章
- springmvc 适配器详解[通俗易懂]
- ajax请求的五个步骤java_如何发送ajax请求?ajax请求的五个步骤详解[通俗易懂]
- c++中 this指针详解[通俗易懂]
- python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]
- CreateThread用法详解[通俗易懂]
- 详解RPN网络[通俗易懂]
- 详解Android布局中gravity与layout_gravity属性[通俗易懂]
- 函数strtol和strtok详解[通俗易懂]
- C++中list用法详解[通俗易懂]
- ViewPager 详解(五)—–使用Fragment实现ViewPager滑动[通俗易懂]
- Floyd算法详解——包括解题步骤与编程[通俗易懂]
- OSI 七层模型和TCP/IP模型及对应协议(详解)
- native2ascii命令详解[通俗易懂]
- linux zip 删除源文件,linux zip命令参数及用法详解–linux压缩zip文件命令[通俗易懂]
- 深入浅出TCP三次握手 (多图详解)[通俗易懂]
- mysql char、varchar详解数据库
- Android Context.getSystemService() 与 ServiceManager 的理解和使用详解手机开发
- Spark入门实战系列–4.Spark运行架构详解大数据
- svm算法 最通俗易懂讲解详解大数据
- HBase性能优化方法总结(一)详解大数据
- Java对json是否合法进行格式校验详解编程语言
- struts2部分详解编程语言
- python工具——geoplotlib详解编程语言
- 快速排序算法,C语言快速排序算法详解
- Qt QTableWidget及基本操作(详解版)
- MySQL中的real数据类型详解(mysql中real)