MySQL中Truncate用法详解

news/2024/6/15 17:36:35 标签: mysql, 数据库, java

MySQL中Truncate用法详解_Mysql_脚本之家

前言:

当我们想要清空某张表时,往往会使用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前一定要再三检查确认,最好提前备份下表数据。

http://www.niftyadmin.cn/n/304280.html

相关文章

RBO-谓词下推

当我们编写一段SQL语句对数据进行查询时,对于数据库来说,会经历以下多个阶段: 先从磁盘中定位数据,取到数据,再把数据传到内存,接着对数据进行目标筛选,筛选出符合条件的数据,最后将…

猪场规模怎样划分?类型都有哪些?

养猪场按照经营方式分为大中小猪场(猪场规模)和集团猪场。集团猪场是指集团化发展与管理的养猪企业,或者简称为集团化养猪企业,重点在于“集团化”。猪场规模则是按照年出栏数量划分。 小规模猪场:年出栏3000头以下&a…

错排问题之年会抽奖与抄送列表

目录 一、编程题 1.年会抽奖 2.抄送列表 二、选择题 1.操作系统中关于竞争和死锁的关系下面描述正确的是? 2.并发是并行的不同表述,其原理相同。 3.在Unix系统中,处于()状态的进程最容易被执行。 4.当系统发生抖动(thrashi…

HTTP 协议详解

HTTP 协议全称为 Hypertext Transfer Protocol,即超文本传输协议,是互联网上应用最为广泛的一种网络传输协议。HTTP 协议定义了客户端(Browser)与服务器之间的通信规范,以实现对各种资源(如 HTML 页面、图像…

看板项目管理:如何可视化工作以提高生产力?

如果你一直关心优化工作流程,提高你或团队的生产力,你肯定听说过看板这个词。 看板是一种工作管理方法,可以将整个工作流程以及构成工作流程的每个单独活动可视化,从而可以识别瓶颈和优化整体流程。 在这方面,看板的…

车联网强势发展下,有什么隐患?

通过新一代信息通信技术,车联网实现了汽车与云平台,车辆和汽车,道路,汽车和人以及内部的全方位网络链接。车联网使用传感器技术感知车辆的状态信息,并利用无线通信网络和现代智能信息处理技术的帮助实现交通智能化管理…

【Linux】Keepalived+Haproxy实现数据库集群负载均衡

1、简介: 本文章的负载均衡和高可用是体现在两个从服务器上的。一般来说高可用是用在主服务器中的,例如双主多从的结构,双主做keepalived的高可用(当然也可以加上haproxy做负载均衡),多从做haproxy的负载均…

MySQL之盛放记录的大盒子 【InnoDB 数据页结构】

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的:从根儿上理解MySQL》 学完了记录结构,我们该学数据页的结构,前边我们简单的提了一下页的概念&#xff…