myql的三种删除方式:delete truncate drop

news2024/10/6 22:31:32

前言

在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,而三者的用法和使用场景又完全不同,接下来我们具体来看。

1.delete

detele 可用于删除表的部分或所有数据,它的使用语法如下:

delete from table_name [where...] [order by...] [limit...]

PS:[] 中的命令为可选命令,可以被省略。
如果我们要删除学生表中数学成绩排名最高的前 3 位学生,可以使用以下 SQL:

delete from student order by math desc limit 3;

1.1 delete 实现原理

在 InnoDB 引擎中,delete 操作并不是真的把数据删除掉了,而是给数据打上删除标记,标记为删除状态,这一点我们可以通过将 MySQL 设置为非自动提交模式,来测试验证一下。非自动提交模式的设置 SQL 如下:

set autocommit=0;

之后先将一个数据 delete 删除掉,然后再使用 rollback 回滚操作,最后验证一下我们之前删除的数据是否还存在,如果数据还存在就说明 delete 并不是真的将数据删除掉了,只是标识数据为删除状态而已,验证 SQL 和执行结果如下图所示:
在这里插入图片描述

1.2 关于自增列

在 InnoDB 引擎中,使用了 delete 删除所有的数据之后,并不会重置自增列为初始值,我们可以通过以下命令来验证一下:
在这里插入图片描述

2.truncate

truncate 执行效果和 delete 类似,也是用来删除表中的所有行数据的,它的使用语法如下:

truncate [table] table_name

truncate 在使用上和 delete 最大的区别是,delete 可以使用条件表达式删除部分数据,而 truncate 不能加条件表达式,所以它只能删除所有的行数据,比如以下 truncate 添加了 where 命令之后就会报错:
在这里插入图片描述

2.1 truncate 实现原理

truncate 看似只删除了行数据,但它却是 DDL 语句,也就是 Data Definition Language 数据定义语言,它是用来维护存储数据的结构指令,所以这点也是和 delete 命令是不同的,delete 语句属于 DML,Data Manipulation Language 数据操纵语言,用来对数据进行操作的。为什么 truncate 只是删除了行数据,没有删除列数据(字段和索引等数据)却是 DDL 语言呢?这是因为 truncate 本质上是新建了一个表结构,再把原先的表删除掉,所以它属于 DDL 语言,而非 DML 语言。
2.2 重置自增列
truncate 在 InnoDB 引擎中会重置自增列,如下命令所示:
在这里插入图片描述

3.drop

drop 和前两个命令只删除表的行数据不同,drop 会把整张表的行数据和表结构一起删除掉,它的语法如下:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]

其中 TEMPORARY 是临时表的意思,一般情况下此命令都会被忽略。
drop 使用示例如下:
在这里插入图片描述

三者的区别
数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。
执行速度方面:drop > truncate > delete。
删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。
添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。
重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列。

总结

delete、truncate 可用于删除表中的行数据,而 drop 是把整张表全部删除了,删除的数据包含所有行数据和字段、索引等数据,其中 delete 删除的数据可以被恢复,而 truncate 和 drop 是不可恢复的,但在执行效率上,后两种删除方式又有很大的优势,所以要根据实际场景来选择相应的删除命令,当然 truncate 和 drop 这些不可恢复数据的删除方式使用的时候也要小心。

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

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

相关文章

独立产品灵感周刊 DecoHack #052 - 100个AI 工具导航网站

本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以 点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。 ❤️ 刚换工作再加上个人原因有些自己的事…

消息队列中间件 - 详解RabbitMQ6种模式

RabbitMQ 6种工作模式 对RabbitMQ 6种工作模式(简单模式、工作模式、订阅模式、路由模式、主题模式、RPC模式)进行场景和参数进行讲解,PHP代码作为实例。 安装 客户端实现:添加扩展,执行composer.phar install命令 {"require":…

SSM框架学习-bean实例化

实例化bean的三种方式 1. 构造方法(常用) Spring创建bean调用的是无参的构造方法,且无论该无参构造方法是公有还是私有的,都可以调用(底层实现原理为反射) 2. 静态工厂(了解) 要配置…

【论文阅读-Low-code LLM】使用LLM进行可视化编程

Low-code LLM: Visual Programming over LLMs link: https://arxiv.org/abs/2304.08103 repository: https://github.com/microsoft/TaskMatrix/tree/main/LowCodeLLM 摘要 大规模预训练模型(LLMs)在解决困难问题仍具有很大的挑战。这篇文章提出了可以…

lua | 数据类型与变量

目录 一、数据类型 8个基本类型 1.nil(空) 2.boolean(布尔) 3.number(数字) 4.string(字符串) 5.table(表 ) 6.function(函数) 7.thread(线程) 8.u…

FIR滤波

参考来源: https://www.zhihu.com/question/323353814 本节主要围绕以下几个问题进行描述: 什么是FIR滤波器时域的卷积频域的相乘 关于FIR FIR滤波就是在时域上卷积的过程。将含噪声信号与低通滤波器的傅里叶逆变换值进行卷积,这个过程就是…

29 - 打家劫舍问题

文章目录 1. 打家劫舍I2. 打家劫舍II3. 打家劫舍III(1) 暴力递归超时(2) 记忆化搜索超时(3) 动态规划 1. 打家劫舍I 动态规划&#xff1a; dp[i] max(dp[i - 2] nums[i], dp[i - 1]); class Solution { public:int rob(vector<int>& nums) {if(nums.size() 1) re…

密码学:分组密码.(块密码:是一种对称密码算法)

密码学&#xff1a;分组密码. 分组加密(Block Cipher) 又称为分块加密或块密码&#xff0c;是一种对称密码算法&#xff0c;这类算法将明文分成多个等长的块 (Block) &#xff0c;使用确定的算法和对称密钥对每组分别加密或解密。分组加密是极其重要的加密体制&#xff0c;如D…

CE游戏特例说明

1.CE修改游戏特例说明 模拟器游戏不能直接修改游戏的程序代码&#xff08;即不能直接使用代码注入的手段修改code段代码&#xff09;&#xff0c;因为游戏并非使用平台语言所写&#xff0c;只有模拟器是使用平台语言写的&#xff0c;即壳是汇编写的&#xff0c;壳用来翻译跨平台…

设计模式 -- 中介者模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

瑞芯微RK3568开发板在智慧交通行业中的应用方案

智能交通安全监测系统是通过利用高性能处理器和先进的图像处理算法&#xff0c;实现对交通场景的实时监测、分析和预警&#xff0c;以提高交通安全水平。以下是基于RK3568处理器的智能交通安全监测系统产品的应用方案&#xff1a; 视频采集与处理&#xff1a; 使用RK3568处理器…

验证码短信 API 接入指南:Java 语言示例代码

短信验证码是一种通过短信发送的验证码&#xff0c;通常用于验证用户的身份、保障账户安全和防止恶意攻击等。短信验证码已经成为现代社会中不可或缺的一部分&#xff0c;广泛应用于各种场景&#xff0c;包括用户注册和登录、找回密码等等。 为了满足企业在账户安全验证和业务…

(详解)Object.keys() Object.values() Object.entries()

目录 一、Object.keys(obj) 二、Object.values() 三、Object.entries() 一、Object.keys(obj) 参数&#xff1a;要返回其枚举自身属性的对象返回值&#xff1a;一个表示给定对象的所有可枚举属性的字符串数组 处理对象&#xff0c;返回可枚举的属性数组 let person {name:…

【机器学习实战】Python基于K均值K-means进行聚类(九)

文章目录 1 前言1.1 K-means的介绍1.2 K-means的应用 2 demo实战演示2.1 导入函数2.2 创建数据2.3 拟合聚类2.4 查看结果 3 使用高级技术评估集群性能*3.1 导入函数3.2 整合数据3.3 计算 4 讨论 1 前言 1.1 K-means的介绍 K均值&#xff08;K-means&#xff09;是一种基于距离…

改写句子的软件有哪些-免费改写文章的软件

改写句子的软件 改写句子的软件是一种广泛应用于文字处理的工具&#xff0c;其主要作用是通过对原文中的语言结构和表述方式进行调整和优化&#xff0c;以改进文章的质量和可读性。改写句子的软件广泛用于新闻报道、科学文章、学术论文、书籍等各类文本材料中&#xff0c;旨在…

Elasticsearch的索引库和文档操作、RestClient的索引库和文档操作

一、Elasticsearch Linux系统通过Docker安装Elasticsearch、部署kibana 1.Elasticsearch Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索…

梅果提取物激增2782%?因字成分崛起|3月功效成分TOP100

全文速览 全文字数&#xff1a;6015字 阅读时长&#xff1a;8-12分钟 1.目前已有11款新原料成分进入监测期&#xff0c;三月新原料备案占比达27.1%。 2.天赐高新成为仅次于美国路博润的全球第二大卡波姆供应商&#xff0c;市占率将近两成。 3.氨基酸洗面奶凭多重功效替代皂…

Flink Dashboard的数据监控功能

一、数据反压 1.1 数据反压是啥 数据反压是在实时数据处理中&#xff0c;数据处理流的某个节点上游产生数据的速度大于该节点处理数据速度&#xff0c;导致数据堆积&#xff0c;从该节点向上游传递&#xff0c;一直到数据源&#xff0c;并降低数据源的摄入速度。导致数据反压…

如何远程内网电脑

要远程访问内联网计算机&#xff0c;您需要遵循以下一般步骤&#xff1a; 连接到与目标计算机相同的局域网 (LAN)。 这可能涉及到现场或使用 VPN 远程连接到 LAN。 获取目标计算机的 IP 地址或网络名称。 确保在目标计算机上启用了远程桌面访问。 使用远程桌面软件与目标计…

ASP.NET Core 8 中身份验证的改进

ASP.NET Core 团队正在改进 .NET 8 中的身份验证、授权和身份管理(统称为“身份验证”)。新的 APIs 将使自定义用户登录和身份管理体验变得更加容易。新的端点将在没有外部依赖的单页应用程序(SPA)中启用基于令牌的身份验证和授权。我们还将改进我们的指引和文档&#xff0c;使…