这篇文章主要介绍“MYSQL清空表和截断表问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MYSQL清空表和截断表问题如何解决”文章能帮助大家解决问题。
清空表和截断表
清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值、索引等不被清除,还是原来的值。
截断表可以用于删除表中 的所有数据。截断表命令还会回收所有索引的分配页。
截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。
delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的 拥有者可以截断表。
另外,truncate表之后,如果有自动主键的话,会恢复成默认值。
清空表数据 可用的两种操作:
delete from 表名; truncate table 表名;
不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。
效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
我在用delete from 进行删除时发现报错了,说时safe updae 模式什么的,后来查看其他小伙伴的博客,发现了解决办法:
只需执行 SET SQL_SAFE_UPDATES = 0; 即可。
关于“MYSQL清空表和截断表问题如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。