当前位置: 首页 > news >正文

【MySQL】MySQL数据库的delete from table和truncate table之间的区别

DELETE FROM tableTRUNCATE TABLE 是两种不同的数据库操作,用于从MySQL数据库的表中删除数据。它们有以下区别:

  1. 操作方式DELETE FROM table 是一种逐行删除的操作,它会逐个删除表中的每一行数据,并且可以带有条件进行过滤。而 TRUNCATE TABLE 操作是将整个表的内容一次性清空,相当于删除并重新创建一个空表。

  2. 效率TRUNCATE TABLE 操作通常比 DELETE FROM table 更高效。因为 DELETE FROM table 操作是逐行删除,每次删除都需要记录事务日志以支持回滚操作,同时还需要触发相关的触发器和外键约束。而 TRUNCATE TABLE 操作则直接释放表的存储空间,并且不记录日志,不触发触发器和外键约束。

  3. 权限要求DELETE FROM table 对于用户而言,需要有逐行删除数据的权限和足够的资源(磁盘空间、内存等)。而对于 TRUNCATE TABLE 操作,用户只需要拥有对应表的 TRUNCATE 权限即可。

  4. 保留结构DELETE FROM table 操作只删除表中的数据,不改变表的结构,包括表的元数据、索引、触发器等都会保留。而 TRUNCATE TABLE 操作会将表的结构、索引、触发器等都保留,只清空数据内容。

  5. 自增主键DELETE FROM table 操作在删除数据后,表中的自增主键仍然会继续递增。而 TRUNCATE TABLE 操作会重置自增主键,下一次插入数据时,自增主键从初始值开始。

综上所述,DELETE FROM tableTRUNCATE TABLE 在删除数据时有不同的行为和效果。选择使用哪种操作取决于你的需求和对数据库资源消耗的考量。如果只是需要删除数据而保留表的结构,且对性能要求较高,可以考虑使用 TRUNCATE TABLE 操作。如果需要逐行删除数据或保留表的数据和结构的其他信息,可以使用 DELETE FROM table 操作。

另外,要删除整个表,可以使用MySQL的DROP TABLE语句。DROP TABLE语句可以彻底删除数据库中的表,包括表的结构、数据、索引和触发器等。

http://www.lryc.cn/news/125105.html

相关文章:

  • 强制Edge或Chrome使用独立显卡【WIN10】
  • easyx图形库基础:3实现弹球小游戏
  • vue基础知识三:v-show和v-if有什么区别?使用场景分别是什么?
  • Python Opencv实践 - 图像旋转
  • 第五章 Opencv图像处理框架实战 5-10 文档扫描OCR识别
  • CentOS 7 源码制作openssh 9.4p1 rpm包 —— 筑梦之路
  • OpenCV图像处理——轮廓检测
  • 【论文阅读】基于深度学习的时序预测——Non-stationary Transformers
  • 开发者如何使用讯飞星火认知大模型API?
  • linux 系统中vi 编辑器和库的制作和使用
  • 麒麟arm架构 编译安装qt5.14.2
  • 【springmvc系】利用RequestBodyAdviceAdapter做接口鉴权
  • ROS学习笔记(三)---好用的终端Terminator
  • NFT Insider#102:The Sandbox重新上线LAND桥接服务,YGG加入Base生态
  • Webpack 的 sass-loader 在生产模式下最小化 CSS 问题
  • pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
  • vue自定义穿梭框支持远程滚动加载
  • TCP 协议十大相关特性总结
  • 文档控件DevExpress Office File API v23.1新版亮点 - 支持.NET MAUI
  • 分割字符串的最大得分
  • ASR 语音识别接口封装和分析
  • C 语言的 ctype.h 头文件
  • Linux系统编程:采用管道的方式实现进程间通信
  • 网络安全面试题
  • 如何成为游戏主程
  • SSM整合(XML方式)
  • 学习Vue:列表渲染(v-for)
  • 使用巴特沃兹滤波器的1D零相位频率滤波研究(Matlab代码实现)
  • ubuntu18.04安装cuda
  • 【MFC】09.MFC视图-笔记