温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MYSQL清空表和截断表问题如何解决

发布时间:2023-03-13 09:37:26 来源:亿速云 阅读:87 作者:iii 栏目:开发技术

这篇文章主要介绍“MYSQL清空表和截断表问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MYSQL清空表和截断表问题如何解决”文章能帮助大家解决问题。

    MYSQL清空表和截断表

    清空表和截断表

    清空表:delete from users;

    清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值、索引等不被清除,还是原来的值。

    截断表:truncate table users;

    截断表可以用于删除表中 的所有数据。截断表命令还会回收所有索引的分配页。

    截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。

    delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的 拥有者可以截断表。

    另外,truncate表之后,如果有自动主键的话,会恢复成默认值。

    MYSQL清空表数据的注意事项

    清空表数据 可用的两种操作:

    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清空表和截断表问题如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI