MYSQL笔记:删除操作Delete、Truncate、Drop用法比较

       5a382f634528da92f697c6eb7e65568f.png        

今天小编给大家梳理一下MYSQL删除操作Delete、Truncate、Drop用法有什么区别,到底该如何合理使用,希望对大家能有帮助!

1、执行速度比较

Delete、Truncate、Drop关键字都可以删除数据

drop>truncate>delete

2、原理方面

2.1 delete

delete属于数据库DML操作语言,只会删除数据表中的记录,会执行事务,执行的时候也会触发触发器。

InnoDB数据库引擎中,执行delete操作只会给删除的记录打上了删除标记,并不会真正删除数据,只是把删除的数据记录设置为不可见,不会释放磁盘空间,如果插入新的数据可以覆盖该部分空间。

如果开启事务的话,执行delete操作,会先将要删除数据缓存到rollback segement中,等事务commit之后才生效。

delete from table_name 不带查询条件会删除表的全部数据,MyISAM引擎会立刻释放磁盘空间,InnoDB 不会释放磁盘空间;如果带查询条件的话都不会释放磁盘空间,可以执行optimize table table_name 会立刻释放磁盘空间。建议如果需要释放存储空间的话可以执行delete后,然后执行optimize table table_name 语句达到清理磁盘空间的目的。

-- 查询数据库test对应的表t_user 占用的磁盘空间
select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') as table_size 
from information_schema.tables 
where table_schema='test' AND table_name='t_user';

说明:delete 操作是逐行执行删除的,并且同时将每行的的删除操作日志记录在redo和undo表空间中去,便于进行回滚(rollback)和重做操作,因此生成的大量操作日志也会占用磁盘空间。

2.2 truncate

truncate是数据库DDL定义语言,不受事务影响,也不会触发 trigger。执行操作后会立即生效,无法找回删除的数据。

执行truncate table table_name 会立刻释放磁盘空间 ,不管是 InnoDB和MyISAM 都一样 。

truncate可以退快速清空一个表。并且重置auto_increment自动增长的值。针对不同类型的数据存储引擎是有区别的,具体如下:

MyISAM:truncate会重置auto_increment(自增序列)的值为1。而delete后表仍然保持auto_increment。

InnoDB:truncate会重置auto_increment的值为1。delete后表仍然保持auto_increment。但是在做delete整个表之后重启MySQL的话,则重启后的auto_increment会被置为1。

说明:InnoDB的表本身是无法持久保存auto_increment。delete表之后auto_increment仍然保存在内存,但是重启后就找不到了,只能从1开始。实际上重启后的auto_increment会从 SELECT 1+MAX(ai_col) FROM t 开始。

使用truncate操作的时候要最好备份表,避免出现不可挽回的情况。

2.3 drop

drop属于数据库DDL定义语言,和truncate一样。执行后会立即生效,不可恢复。

drop table table_name 执行成功后不管是MyISM还是InnoDB都会立刻释放磁盘空间 ,并且会删除该数据表上依赖的约束(constrain)、触发器(trigger)、索引(index);  依赖于该表的存储过程/函数将保留,但是会变为失效状态。

总结

在工作当中执行数据库删除的时候一定要慎重再慎重,建议每次进行数据删除的使用最好数据表的备份工作,这样就会大大减少你删除跑路的几率。很多时候不要过于相信自己的动手能力,老虎还有打盹的时候,万一手滑了呢。尽可能养成好的数据库运维习惯,这样会让自己少跌跟头,你的事业才会更加顺利。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

bd27521cb02333432564d9832719561d.png

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

partition oracle用法,Oracle partition by 使用说明

--用法详解0、select * from wmg_test; ---测试数据1、select v1,v2,sum(v2) over(order by v2) as sum --按照 v2排序,累计nn-1....1from wmg_test;2、select v1,v2,sum(v2) over(partition by v1 order by v2) as sum --先分组,组内在进行…

SQLServer优化:SQLServer中NOLOCK关键字的用法介绍

目录 1、为什么SQLServer有NOLOCK关键字? 2、SQLServer有NOLOCK有什么问题 3、NOLOCK使用场景 4、nolock和with(nolock)的区别 5、表解锁脚本 1、为什么SQLServer有NOLOCK关键字? SQLServer没创建一个查询,都相当于创建一个查询会话&#xff…

20144303 20145239 实验三

20144303 20145239 实验三 实验内容 1、首先连接好实验箱电源,用串口线、并口线、网线、连接实验箱和主机 2、安装ADS并破解 安装文件在00-ads1.2目录下,破解方法在00-ads1.2\Crack目录下 3、安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 把整个GIVEIO目录…

oracle无法创建监听器,关于Oracle net Manager中点击无法创建监听程序的解决方案

首先查看你的环境变量中是否有如果没有请添加该环境变量。变量名为:TNS_ADMIN 变量值为:E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN;(如果你更改了默认目录,请找到相应的目录加进去),添加完成之后,…

办公技巧:分享5个非常好用的Excel插件

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

weblogic安全漫谈

今天,我来与大家探讨一下关于weblogic的话题 在进入内网后,如图: 当我们看到7001时,我们就可以测试weblogic反序列化漏洞,如图: 证明,漏洞存在,查看一下权限,如图&#x…

linux使进程不依赖终端,Linux nohup命令应用简介--让Linux的进程不受终端影响

nohup命令应用简介--让Linux的进程不受终端影响by:授客QQ:1033553122#开启ping进程[rootlocalhost ~]# pinglocalhost &[2] 4169[1]Terminatednohup ping localhost[rootlocalhost ~]# PINGlocalhost (127.0.0.1) 56(84) bytes of data.64 bytes from localhost…

电脑技巧:Win10操作系统设置定时开机图解教程

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

网络技巧:想要WiFi信号满格,路由器应该这样放

现如今人手一部手机 不知不觉 WiFi也成了生活“必需品” 刷视频正入迷视频却突然卡顿 换个房间就收不到WiFi信号 如此令人抓狂的事情 生活中你一定遇到过 其实 这与路由器的错误摆放有很大关系 家庭无线路由器 放置在哪里信号最好? WiFi信号差如何解决? …

linux系统export,Linux入门进阶 - 如何在Linux中使用export命令

原标题:Linux入门进阶 - 如何在Linux中使用export命令来自: Linux迷链接:https://www.linuxmi.com/linux-export.htmlLinux export命令会标记哪些值需要传递给一组子进程。这是bash shell提供的一个简单但有用的特性。它允许管理员在不中断当…

Duilib开发环境搭建

1.到github上下载最新版本,https://github.com/duilib/duilib,也没有发现版本号,就如图所示吧 2.我只安装了VS2008,而github上的已经更新到VS2013了,所以要手动修改SIN工程文件 把sln文件打开,将最上面的2行…

手机技巧:手机丢了记住这四步操作,让你的损失降到最低

随着扫码支付的普及、智慧生活的升级,没有钱包能付账,没有公交卡能乘车,没有银行卡也能取款,只要你手机在手,手机手机钱包身份证银行卡各种支付密码。但你是否想过,如果某一天手机丢了,该怎么办…

mysql共享锁

共享锁 共享锁指的就是对于多个不同的事务,对同一个资源共享同一个锁。相当于对于同一把门,它拥有多个钥匙一样。就像这样,你家有一个大门,大门的钥匙有好几把,你有一把,你女朋友有一把,你们都…

网络技巧:无线路由器越用越慢的解决方法

目录 01 ​​​​​​​路由器越用越慢很平常 02 国区设置不要乱用 03 很容易被遗忘的IPv6设置 04 学会自我检查掉线问题 05 番外篇:测试自己的网速 “耳机、音箱通过一定时间的煲机,表现效果会变好,可为何家里WiFi网络却老是给人越用越慢、越…

Mac软件:15个提升办公效率的软件

目录 1.解压软件:RAR Extractor - The Unarchiver Pro 2.实用清理软件:CleanMyMac X 3.水族屏保软件:Desktop Aquarium Wallpaper‪s 4.桌面图标隐藏工具:Desktop Curtain 5.剪贴板工具:Paste 6.快捷键查看软件:Cheats…

从0开始学习 GitHub 系列之「03.Git 速成」

前面的 GitHub 系列文章介绍过,GitHub 是基于 Git 的,所以也就意味着 Git 是基础,如果你不会 Git ,那么接下来你完全继续不下去,所以今天的教程就来说说 Git ,当然关于 Git 的知识单凭一篇文章肯定说不完的…

Spring系列(一):Spring相关知识介绍笔记

目录 1、Srping概念 2、Spring原理 2.1 控制反转(Inversion of control)(IOC) 2.2 面向切面编程(Aspect-Oriented Programming)(AOP) 3、Spring框架结构 4、Srping生命周期 4、Srping有什么优势? 4.1、非侵入式设计 4.…

nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException(Spring循环依赖问题)

1:问题 最近启动项目时候,遇到如下报错 nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name stockReceiptManager: Bean with name stockReceiptManager has been injected the bean. Thi…