开发者

MYSQL清空表和截断表问题

开发者 https://www.devze.com 2023-03-14 09:03 出处:网络 作者: owenzhang24
目录mysql清空表和截断表清空表:delete from users;截断表:trunc编程ate table users;MYSQL清空表sZymEi数据的注意事项两者比较总结MYSQL清空表和截断表
目录
  • mysql清空表和截断表
    • 清空表:delete from users;
    • 截断表:trunc编程ate table users;
  • MYSQL清空表sZymEi数据的注意事项
    • 两者比较
  • 总结

    MYSQL清空表和截断表

    清空表和截断表

    清空表:delete from users;

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

    截断表:truncate table users;

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

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

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

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

    MYSQL清空表数据的注意事项

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

    delete from 表名;
    
    truncate table 表名;

    两者比较

    不带where参数的delete语句可以删除mysql表中所有内容,使用t开发者_mariadbruncate table也php可以清空mysql表中所有内容。

    效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

    delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构js,重新创建了这个表,所有的状态都相当于新表。

    我在用delete from 进行删除时发现报错了,说时safe updae 模式什么的,后来查看其他小伙伴的博客,发现了解决办法:

    只需执行  SET SQL_SAFE_UPDATES = 0; 即可。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号