DELETE、TRUNCATE 和 DROP 区别

ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花

核心区别

所属语句

DML (数据操作语言)

DDL (数据定义语言)

DDL (数据定义语言)

能否回滚

可以 (在事务中)

不可回滚

不可回滚

自增主键

不重置

重置 (归为初始值)

重置 (归为初始值)

操作速度

慢 (逐行删除,记录日志)

快 (释放页面,少量日志)

极快 (直接销毁表结构)

触发条件

需配合 WHERE 筛选

不可带 WHERE

直接作用于全表

表结构/索引

保留

保留

彻底删除

详细深度解析

1. DELETE

  • 原理:它是一行一行地从表中删除数据,并且每删除一行,都会在事务日志(Redo Log)中记录一行。
  • 优势:灵活且安全。可以通过 WHERE 子句精确删除某一行或部分数据。可以在 BEGIN; ... COMMIT; 事务中操作,误删可以通过 ROLLBACK; 恢复。
  • 劣势:慢,数据量越大耗时越长。不会重置自增主键(AUTO_INCREMENT)。如果你删光了所有数据,再插入新数据,ID 会接着最后一个 ID 继续涨,而不是从 1 开始。不会释放表占用的物理空间(高水位标记保留),可能导致表空间膨胀。

2. TRUNCATE

  • 原理:它并不直接操作数据,而是直接销毁表中的数据页面(Page),相当于重新创建了一个空表。
  • 优势:极速。因为不逐行删除,所以不受数据量大小影响,且日志量极少。
  • 劣势:无脑。不能带 WHERE 条件,只能全表清空。不可回滚(在 MySQL 多数存储引擎中)。一旦执行,数据瞬间消失。会触发 AUTO_INCREMENT 主键重置。
  • 适用场景:快速清空归档表、日志表,且确定不需要回滚时使用。

3. DROP

  • 原理:彻底将表结构和数据一起从数据库中删除。
  • 影响:表的索引、触发器、存储过程等一并被删除,资源完全释放。
  • 适用场景:不再需要该表时,直接销毁。

代码示例与实践

DELETE(带条件删除)

// 1. 开启事务
BEGIN;

// 2. 删除 id 为 1 的用户
DELETE FROM user WHERE id = 1;

// 3. 检查无误后提交
COMMIT; 
// 若出错 -> ROLLBACK; 数据恢复

TRUNCATE(快速清空)

// 直接清空,无日志可回滚
TRUNCATE TABLE user;

DROP(销毁表)

// 连表带数据一起删除
DROP TABLE user;

总结与建议

  1. 要安全、要精准 ➡️ 用 DELETE(特别是带 Where 条件)。
  2. 要清空大表、追求极速 ➡️ 用 TRUNCATE。
  3. 不要了、删表 ➡️ 用 DROP。

ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花

MySQL基础 文章被收录于专栏

《MySQL基础专栏》专为编程新手打造!从SQL核心语法、数据增删改查,到预编译SQL、索引入门、事务基础,层层拆解MySQL必备知识点。专栏摒弃晦涩术语,以通俗讲解+实操案例,带你掌握数据库基础操作,规避SQL注入、性能低效等常见坑,快速搭建MySQL基础体系,轻松应对日常开发中的数据库基础场景。

全部评论

相关推荐

03-11 20:19
已编辑
门头沟学院 Java
太压力了,面了2个多小时,本菜比已经被拷打的瑟瑟发抖面完两个小时后通知过了1.算法题三道(1)leetcode124 二叉树中最大路径和hard题 因为不久前才刷过撕出来了,又来了一道(2)leetcode 300 最长递增子序列变种除了递增之外还加了一个权重因素,但是思路没变,dp就行(3)寻找词汇库里符合固定长度前缀的匹配单词应该是他们自己题库的题。给了一串单词列表,然后又给了一个单词,一个下标,根据这个下标的前缀去单词列表里面找到所有匹配的单词再返回思路是创建一个单词前缀树,然后根据树找,但是可能是构件树数有问题没撕出来2.全方位项目拷打基本没有问八股,全部都是项目企业场景题,哎哟我操,完全不会。我就纯八股战士,结果没想到一道八股都没问反正尽可能把企业场景往八股上引吧。。1. 微服务多点部署其中一个宕机了怎么办2. 要是mq占据大量CPU该怎么排查?MySQL占据大量CPU该怎么排查?3. 假如说让你实现视频点赞功能,你打算怎么设计?讲讲思路(我知道多级缓存,但是碰巧没背……寄)4. Redis延迟双删是什么,分布式锁,哨兵模式5. MySQL到es同步的延迟该怎么优化6. Rabbit mq的队列是怎么实现的?(这个完全没整明白,可能是队列的底层结构? 反正我硬扯的讲了一下rabbit mq的架构)还扯了很多,但是往后完全就慌了),记住的是这些
不知道怎么取名字_:2小时确实有压力,持续性的脑力劳动啊
查看9道真题和解析
点赞 评论 收藏
分享
一共一个小时,面试难度以及自己的回答算是最近的面试压力比较大的,实习问了30分钟,中间穿插八股。1.redis数据结构2.redis持久化机制3.mysql索引底层4.聚簇索引与非聚簇索引5.索引优化6.索引失效7.mysql执行一条sql8.那么多索引mysql怎么选(不会)9.tcp与udp区别10.tcp为什么可靠11.消息队列作用12.kafka怎么保证消息有序性13.mcp是什么?14.skills是什么?15.jvm内存分配与回收过程(我讲了从创建对象到判断垃圾对象到垃圾回收我全说了一遍,是这个吗?)16.fullgc触发机制17.tcp的拥塞控制流程(不会了)18.分布式事务解决方案,说了2pc,3pc,tcc。算法是反转双向链表,没有按格式输出,但是面试官没让继续写了,面完以为挂了,结果晚上秒过,看看复试什么情况吧。今天百度打电话准备发offer了,业务跟在手子的差不多,很垂,并且说不分日常暑期,只看表现,会有转正机会,但是考虑再三还是拒绝了,百度实习薪资确实有点低,title也不如之前了,但是面试的二位业务老师我很喜欢,对我的评价也不错,希望之后能有机会共事。从三月份到现在一共面了六家,面试次数总共是8场,情况如下:脉脉二面(无答复,默认挂)百度二面已oc美团一面过,下周一二面shein一面过直接HR面游族一面过直接HR面腾讯一面过等待约二面滴滴明天一面面试通过率还是蛮高的,但是大部分都是日常,感觉对我现在的加成不大,大概率不会去,不知道暑期会是什么情况呢唉,希望能有面试吧,继续加油。字节被无hc直接取消了,现在还没人捞,有没有字节HR救救我
不管什么都不想跳动了:本人美团百度快手都待过,建议肯定是直接留快手多一点产出后转正or直接冲字节腾讯暑期吧。一是快手从福利到基建都吊打另外两家。美团现在这个业务比较惨,本来毛利就很低,亏损严重,今年很可能要优化人力降低成本,去了别说日常,就算暑期后面都很可能被优化。百度其实实习生权限挺高的,可以接触到一些含金量高的项目,但是现在的风评不如之前了,薪资也不高。二是转正概率和薪资是跟产出挂钩的,你都在手子已经积累产出了,去其他家日常实习产出都是从0开始,肯定不可能有你在手子转正可能性大啊,现在日常压根没必要去,而且我有两个师弟都是在快手日常转正的,不用太担心,安心留在手子一边多做一点产出然后一边冲字节腾讯暑期,字节腾讯今年实习岗位非常多的,不如好好把握这个,加油。
查看18道真题和解析
点赞 评论 收藏
分享
03-11 09:14
已编辑
武汉大学 后端工程师
24年6-8月,我的大三暑假,在鹅厂pcg度过了一段难忘的实习时光。那年的面试很顺利,一共面了3家offer了2家,进了组之后同事们都很好,mt是我的校友,至今仍然保持良好关系。后来我放弃了转正机会,因为觉得保研名额来之不易,我觉得硕士毕业后一定可以有更好的工作,更高的工资。可是之后发生的一切却让我始料未及。一年半过去,我会的东西变多了,却从1月起再难以通过任何一家公司的一场面试。目前的我有客户端的实习经历,有后端的知识储备,有agent相关的项目履历,且因研究生阶段师兄带着做科研对大模型相关的知识也有一定的了解。力扣刷了500题,说多不多,说少不少,反正把hot100和灵神题单1700分以下的都做了遍。但为什么自己就是通不过面试呢?客观分析的话有自己不够专精某一方面的因素,每次面试刚开始被问一个点的时候刚开始还OK,面试官接着深入拷打,我就没啥办法了,临场应变能力也不行。说白了:BFS❤️;DFS💔。另外就是自己没有一套很好的学习体系,总是拆东墙补西墙,因为某次面试被拷打项目,就疯狂准备项目相关的知识,忽略了计算机基础,结果下周的另一场面试被面试官计网OS一通轰炸。说了这么多,聊聊我目前的状态吧。很多大厂最近都开放了春招实习的投递,我目前采取的是海投策略。这周的Timeline大概就是周四要再次征战鹅厂,wxg的面试强度想必大家都了解,我也没有抱希望能过,以学习为主吧。周六的团子笔试应该可以试一下,毕竟有两次机会,而且貌似团子不咋看笔试分数?蚂蚁也发了笔试邀请,但因为阿里系今年笔试的改革,打算观望一下第一场的情况再参加。对自己下阶段的期望,就是不要怀疑自身的能力,然后客观评估自己当前的水准,持续进步。感谢大家能看完哥们的碎碎念,祝各位牛友都早日拿到理想offer,我后面也会持续更新自己的面试记录,也欢迎大家来一起交流呀
钱嘛数字而已:"后来我放弃了转正机会,因为觉得保研名额来之不易"--- 转正机会明显比保研名额更来之不易。从保研的比例和大厂offer的通过率,非常容易判断。
今天你投了哪些公司?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务