问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL DELETE语句和TRUNCATE TABLE语句的区别

发布网友 发布时间:2022-04-21 22:29

我来回答

3个回答

热心网友 时间:2022-04-08 05:07

DELETE语句和TRUNCATE语句,都是删除数据表中的数据,但是它们对数据库的影响是很不一样的。一般来讲DELETE用于日常数据表的删除操作,TRUNCATE则用于对数据库整体性的维护性操作。如果您不是数据库管理员,特别是对TRUNCATE语句的影响不太了解的情况下,请不要使用TRUNCATE语句。下面TRUNCATE语句说明取自MySql用户手册,供参考。
TRUNCATE语法
TRUNCATE
[TABLE]
tbl_name
TRUNCATE
TABLE用于完全清空一个表。从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同。
对于InnoDB表,如果有需要引用表的外键*,则TRUNCATE
TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表)。使用TRUNCATE
TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键*。
对于其它存储引擎,在MySQL
5.1中,TRUNCATE
TABLE与DELETE
FROM有以下几处不同:
·
删减操作会取消并重新创建表,这比一行一行的删除行要快很多。
·
删减操作不能保证对事务是安全的;在进行事务处理和表锁定的过程中尝试进行删减,会发生错误。
·
被删除的行的数目没有被返回。
·
只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE
TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。
·
表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。即使对于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值。
·
当被用于带分区的表时,TRUNCATE
TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时分区定义(.par)文件不受影响。
TRUNCATE
TABLE是在MySQL中采用的一个Oracle
SQL扩展。

热心网友 时间:2022-04-08 06:25

在逻辑上truncate table和delete语句都可以删除表里面所有数据,但是在一些情况下有些不同:
对于InnoDB表
1,如果没有外键关联,innodb执行truncate是先drop table(原始表),再创建一个跟原始表一样空表,速度要远远快于delete逐条删除行记录。
2,如果使用innodb_file_per_table参数,truncate table 能重新利用释放的硬盘空间,在InnoDB Plugin中,truncate table为自动回收,如果不是用InnoDB Plugin,那么需要使用optimize table来优化表,释放空间。
3,表有外键关联,truncate table删除表数据为逐行删除,如果外键指定级联删除(delete cascade),关联的子表也会会被删除所有表数据。如果外键未指定级联(cascde),truncate table逐行删除数据,如果是父行关联子表行数据,将会报错。
4,auto_increment计数器在truncate table后会重置为0.与是否有外键关联没有关系。

热心网友 时间:2022-04-08 08:00

delete是删除表中某些记录;truncate是清表语句。如果要清表的话,truncate会比delete*快很多
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 有什么软件可以自动识别相似的照片? mysql 删除数据只有delete吗 有没有跟小书亭和坏坏猫差不多的小说阅读软件,推... mysql的表坏了怎么修复啊? sql中的数据,用delete删除了,用什么软件进行恢复? 如何使用Percona Data Recovery Tool恢复mysql 被d... 小书亭和微信读书哪个书多 有没有和小书亭类似的阅读软件? mysql数据库中一个表记录太多怎么办 mysql 在没有备份情况下使用drop database 还能恢复吗 小书亭APP怎么分享好书 小说分享方法介绍 小书亭最新版叫什么 mysql truncate 误删数据 怎么办 为什么用小书亭下载小说特别慢,, 小书亭的txt是不是永久存在? 在哪下载小书亭 最近小书亭不能用了,书荒啊,有没有跟它差不多的... 无骨鸭爪怎么煮不缩水 无骨鸭掌煮多久能熟 怎样红烧无骨鸭爪子 Windows下mysql中如何恢复某一个指定的表? 手机网盘会自动识别某人照片并保存吗 查询mysql数据库中所有表名并删除数据 华为手机怎么自动识别图片上的文字 mysql数据表数据怎么删不掉 初中毕业自我评价 怎么样才能识别照片 当客户出现个人信用不良记录时银行应该采取哪些措施? 贷款到期了还不上银行会采取什么措施? 银行如何处理贷款逾期 中学毕业自我评价范文 兴业银行催款的招数 自动识别图片生成表格免费软件 初中毕业生学生自我评价 看看 银行是怎样对待那些逾期严重的客户 华为畅想9plus自动识别照片怎么关掉 信用卡逾期了怎么跟银行协商解决 银行如何催收逾期? 初中生毕业自我评价要怎么写呢? 信用卡逾期银行催收的方式有哪些?