MySQL中 delete,truncate,drop的区别

目录

truncate、delete、drop区别

1.删除对象不同

2.删除条件支持不同

3.命令分类不同

4.回滚支持不同

5.自增初始化不同

6.执行速度不同


在 MySQL  中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行效果完全不同,接下来我们来看一下。

truncate、delete、drop区别

如图所示

正式开始之前,我们先来创建一个用户表和用户测试数据,方便后续演示使用:

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES ('1', '张三', '187');
INSERT INTO `student` VALUES ('2', '李四', '178');
INSERT INTO `student` VALUES ('3', '王五', '55');

创建的表结构和数据如下图所示: 

1.删除对象不同

delete和truncate只删除表数据不删粗表字段

delete删除之后的结果如下:

 我们先将表还原到初始状态,再使用 truncate 执行删除操作,执行结果如下图所示:

 把表还原到初始状态,执行 drop 删除语句,执行结果如下图所示:

 从上述结果可以看出,delete 和 truncate 只删除表数据,而 drop 把表结构和表数据都删除了。

 2.删除条件支持不同

truncate 和 drop 不支持添加 where 条件,而 delete 支持 where 条件

3.命令分类不同

truncate、delete 和 drop 所属 SQL 分类不同,SQL 分为以下 3 类:

  1. DDL【DataDefinitionLanguage】数据定义语言,用来维护存储数据的结构代表指令: create、drop、alter、truncate。
  2. DML【DataManipulationLanguage】数据操纵语言,用来对数据进行操作代表指令:insert,delete,update,DML 中又单独分了一个 DQL,数据查询语言,代表指令是 select。
  3. DCL【DataControlLanguage】数据控制语言,主要负责权限管理和事务代表指令:grant,revoke,commit。

其中 delete 属于 DML,而 truncate 和 drop 属于 DDL

truncate 是先复制一个新的表结构,再把原有旧表结构和数据一起删除,所以它属于数据定义语言 DDL,而非数据操纵语言 DML。

 4.回滚支持不同

 delete 属于 DML 支持事务回滚操作,而 truncate 和 drop 属于 DDL,执行之后立马生效,且数据是不可恢复的,接下来我们来验证一下。首先先将 MySQL 的自动事务提交关闭,自动事务提交的默认值是“ON”也就是开启了自动提交,如下图所示:

show variables like 'autocommit';

 

将自动提交(事务)关掉 set autocommit='off';

 

 接下来我们演示一下 delete 的回滚操作

可以看出 delete 之后是可以进行数据恢复(回滚)的,而 truncate 和 drop 之后是不能回滚的,各位可以自行测试一下后两种方式的 SQL 执行。

5.自增初始化不同

delete 不会重置自增字段的初始值

insert into gmall.student(name,age) values('赵六',100);

而 truncate 会重置自增字段的初始值

insert into gmall.student(name,age) values('田七',100);

6.执行速度不同

delete 是逐行执行的,并且在执行时会把操作日志记录下来,以备日后回滚使用,所以 delete 的执行速度是比较慢的;而 truncate 的操作是先复制一个新的表结构,再把原先的表整体删除,所以它的执行速度居中,而 drop 的执行速度最快。

 总结

        truncate、drop 和 delete 的区别主要有以下 6 点:

  1. 执行速度:drop > truncate > detele。
  2. delete 和 truncate 只删除表数据,而 drop 会删除表数据和表结构以及表的索引、约束和触发器。
  3. delete 可以加 where 条件实现部分数据删除,而 truncate 和 drop 不能加 where 条件是整体删除。
  4. truncate 和 drop 是立即执行,且不能恢复;而 delete 会走事务,可以撤回和恢复。
  5. truncate 会重置自增列为 1,而 delete 不会重置自增列。
  6. truncate 和 drop 是 DDL 语句,而 delete 是 DML 语句。

真离谱
关注 关注
  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
truncatedeletedrop的6大区别!】
学无止境
03-04 4235
truncatedeletedrop的6大区别!】
MySQL删除表操作实现(deletetruncatedrop区别
09-09
主要介绍了MySQL删除表操作实现(deletetruncatedrop区别),文通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
MySQLdeletetruncatedrop区别
心有谦谦结
08-03 489
drop:‌删除表及其所有数据,‌包括表结构、‌索引、‌触发器等,‌是最彻底的删除方式。‌ truncate:‌仅删除表的所有数据,‌但保留表结构、‌索引、‌触发器等,‌常用于快速清空表数据。‌ delete:‌删除表的特定行数据,‌可以指定条件删除,‌支持事务回滚
MySQLDROP/DELETE/TRUNCATE区别
最新发布
weixin_45092290的博客
08-09 1124
数据库管理DROPDELETETRUNCATE是三种基本的数据删除命令,各有特定用途。DELETE用于删除选定的数据行,并记录事务日志以支持回滚;TRUNCATE用于快速清空表,不记录详细日志,但不触发行级触发器;DROP则彻底删除整个表和其元数据。这篇博文详细解析了每个命令的工作原理、优点及适用场景,帮助用户根据需要选择合适的命令以优化数据库操作和保障数据安全。
drop,truncatedelete区别
weixin_30938149的博客
07-10 82
注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncatedelete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,...
MySQL删除表操作(deletetruncatedrop区别
热门推荐
编程随笔与杂谈
08-21 8万+
  本文主要讲mysql三种删除表的操作,delete语句、truncate语句以及drop语句的区别: 简介 delete 1、删除整张表的数据: delete from table_name; 2、删除部分数据,添加where子句: delete from table_name where...; 3、说明   1)、属于DML语言,每次删除一行,都在事务日志为所删除...
mysqldroptruncatedelete区别
u010825931的博客
01-07 713
一.drop DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] 如:drop table t_order; 会删除表的定义、所有表数据、所有触发器,但它不会删除你为该表设置的权限(需手动删除)。它是DDL语句会隐式提交事务。 具体可以看官网:https://......
deletetruncatedrop区别以及该如何选择
12-14
前言 上周同事小姐姐问我:“哈哥你看,我发现...咱们常用的三种删除方式:通过 deletetruncatedrop 关键字进行删除;这三种都可以用来删除数据,但场景不同。 一、从执行速度上来说 drop > truncate >> DELETE
详解MySQLDROP,TRUNCATEDELETE区别实现mysql从零开始
12-15
MySQL数据库管理,删除数据是一项常见的操作,但有三种不同的方法可以实现这一目标:DROPTRUNCATEDELETE。理解它们之间的区别至关重要,因为它们各自具有不同的特性和使用场景。 1. **DROP命令**: - DROP...
MYSQL droptruncatedelete区别
ajiao的博客
09-19 559
参考的链接:区别 mysql游标的使用案例详解(学习笔记) 游标
mysql drop/truncate/delete区别
Andy的博客
10-25 197
mysqldelete , droptruncate 区别 1、deletetruncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。 2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncatedrop 是 DDL 语句,操作完马上生效,不能回滚,打...
mysqldeletedrop区别_SQLdrop,deletetruncate的异同
weixin_42311979的博客
02-08 501
相同点:truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据不同点:1. truncatedelete 只删除数据不删除表的结构(定义)drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。2. delete 语句是数据库操作语言...
MySQL删除操作DeleteTruncateDrop用法比较
cxs_123的博客
04-18 1420
1、执行速度比较 DeleteTruncateDrop关键字都可以删除数据。 drop > truncate > delete 2、原理方面 2.1 delete delete 属于数据库 DML 操作语言,只会删除数据表的记录,会执行事务,执行的时候也会触发触发器。 InnoDB 存储引擎,执行 delete 操作只会给删除的记录打上删除标记,并不会真正删除数据。 只是把删除的数据记录设置为不可见,也不会释放磁盘空间。如果插入新的数据可以覆盖该部分的空间。 如果开启事务的话,执行 de
DropTruncate区别
chenyuanyuan1992的博客
10-22 446
示例说明: 表名 test 字段:id 主键自增,== 现在打算把表清空,一开始用的drop+create,但是发现id是在原基础上增加的。 后来,经朋友提醒,才知道用truncate直接清空表就可以了。 总结: 1.drop删除相当于把表移动到回收站,但是索引之类的还在占着空间...
mysql deletedrop_MySQL deletedrop区别
weixin_31246141的博客
01-19 2万+
DELETE命令的简单介绍DELETE是一种数据操作语言(DDL)命令,可以使用DELETE命令来从表删除部分或全部记录。可以和WHERE子句一起使用,用于删除满足添加的某些记录;如果未指定WHERE条件,则将删除所有记录。【相关视频教程推荐:mysql教程】注:使用DELETE命令无法删除整个表或域、约束。DELETE命令的语法如下:DELETE FROM relation_name whe...
MySQL数据库droptruncatedelete区别
张维鹏的博客
12-24 4224
1、删除速度:drop>truncate>delete; 2、删除方式: (1)执行delete操作时,每次从表删除一行,并且同时将该行的的删除操作记录在日志文件delete可根据where条件删除表指定的数据,如果不指定where子句,则跟truncate一样,可以删除表所有记录。 (2)truncate通过释放存储表数据所用的页来删除数据,一次性删除表所有记录,不会将删除的数据记录在日志文件,只在日志文件记录页的释放,使用的系统和事务日志资源少,所以执行速
MySQL truncatedeletedrop区别
走向程序的康庄大道
04-12 1212
表数据和表结构 truncatedelete都会删除表的数据,drop不仅会删除表数据也会删除表结构。 是否重置标识计数器 truncate 删除表的所有行,表的列、约束、索引保持不变,但标识计数器将被重置。而delete会保留标识计数器。 例如,如果想清空主键自增的表数据,并且重置主键位置,则使用truncate;如果想清空主键自增的表数据,并且保留主键位置,则使用delete
mysqldeletetruncatedrop区别
weixin_46682297的博客
03-09 612
一、delete delete from table_name [where...][order by..] 删除行数据,数据可以恢复,储存空间并不会减小 二、truncate truncate [table] table_name 把原表删除,重新创建一个表,因此是删除了表的数据,不可恢复,储存空间变小,不能用where查询条件 三、drop drop table table_name 删除所有数据+表格结构,不可恢复 ,不能用where查询条件 执行速度:drop>truncate&gt
MySQL面试精华:drop, deletetruncate对比详解
1. **Drop, Delete, and Truncate区别**: - **Drop**语句彻底删除表,包括结构和所有数据,不可逆,依赖的约束、触发器和索引都会被删除,且操作不可回滚。 - **Delete**操作保留表结构,删除指定条件下的数据...
写文章

热门文章

  • Hadoop启动后没有namenode进程的解决办法 8685
  • Linux安装miniconda3 8680
  • 启动zookeeper和kafka时 kafka无法启动或者闪退 6355
  • Hadoop启动后没有datenode进程的解决办法 5325
  • kafka如何保证数据不丢失? 2549

最新评论

  • 启动zookeeper和kafka时 kafka无法启动或者闪退

    真离谱: 这个是原本就有的 你只是找到日志的存放位置 然后去删除他

  • 启动zookeeper和kafka时 kafka无法启动或者闪退

    炸酱面骨头汤: 博主,你好,这个脚本在mobaxterm里面怎么写

  • Phoenix连接Hbase失败

    M_Y碎月: 请问博主,这是什么原因造成的呀?

  • 启动Phoenix执行./sqline.py一直卡着没反应

    what_happened!: 十分感谢 hdfs的操作才是问题的关键 谢谢您

  • Linux安装miniconda3

    flamezhu: 请问第五步出现Miniconda3-latest-Linux-x86_64.sh: 行 483: /home/xxx/miniconda3/bin/python: 没有那个文件或目录是什么原因

最新文章

  • Spark简介
  • Linux安装miniconda3
  • kafka如何保证数据不丢失?
2023年14篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家东莞玻璃钢动物雕塑销售价格玻璃钢名人仿铜像雕塑吉安动物玻璃钢雕塑销售厂家深圳厂家玻璃钢雕塑资讯枣庄玻璃钢雕塑价格巫山玻璃钢雕塑大连小区玻璃钢雕塑定制和平玻璃钢雕塑工程龙南玻璃钢雕塑厂家品牌玻璃钢卡通雕塑包括哪些四川玻璃钢雕塑摆件订购哈尔滨商场美陈方案商场玻璃钢雕塑连云市玻璃钢雕塑厂包头人物玻璃钢雕塑厂家天水景区玻璃钢雕塑制作汕头动物雕塑玻璃钢图片嘉兴景观玻璃钢雕塑市场江苏开业商场美陈订购黑河卡通玻璃钢雕塑定做个旧市玻璃钢雕塑厂家电话玻璃钢化雕塑威海玻璃钢广场雕塑厂家批发房地产水景玻璃钢雕塑定做玻璃钢主景雕塑南宁个性化玻璃钢雕塑市场同安园林玻璃钢雕塑推荐佛山会发光的玻璃钢雕塑玻璃钢雕塑加工工艺云南室内玻璃钢卡通雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化