MySQL中如何设置 auto_increment 重新计数 主键id从1开始(转载)

本文详细介绍了在MySQL中,如何在清空表后重置auto_increment字段,使其从1开始计数,包括使用delete和truncate两种方法的区别及注意事项。

在使用auto_increment时,应该注意一个小问题, 当进行delete from 表名称 清空表的时候,重新插入数据 , 发现auto_increment主键字段计数不是从1开始的,而是接着最新插入的数据id开始!

那么如何重新计数呢?

可以使用以下命令:

方法1

delete from 表名称;
alter table 表名称 auto_increment=1
#–这种方法处理的好处就是 可以设置auto_increment 为任意值开始自增
#–提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上, 所以注意使用场景
1
2
3
4
方法2

#–直接一句话搞定
truncate table 表名称
#–(好处就是简单,auto_increment值重新开始从1计数)
1
2
3
重点注意 : 一般情况下我们使用第二个就可以了,记住以上情况都是彻底删除所有记录, 所以我们在设定之前要考虑周密,设计数据库表的时候也要考虑多方面因素!

在这里插入图片描述

在这里插入图片描述

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
听说 👉 点赞 👈 的人运气不会太差,每一天都会元气满满哦 嘿嘿!!! ❤️ ❤️ ❤️
大家的支持就是我坚持下去的动力。点赞后不要忘了👉 关注 👈我哦!
更多精彩内容请前往 极客小俊GeekerJun 的博客

如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留个言指出、或者你有更好的想法,欢迎一起交流学习~~~

原文链接:https://blog.youkuaiyun.com/windowsxp2018/article/details/108091713?utm_medium=distribute.pc_feed.none-task-blog-cf-2.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-cf-2.nonecase&request_id=5f4398110388ae0b5643c779

MySQL 中,若希望将某个自增主键(`AUTO_INCREMENT`)的起始值重置为从 1 开始,可以通过以下几种方式实现,具体取决于当前表的状态和需求。 ### 使用 `TRUNCATE` 重置自增主键 如果表中数据可以完全清空,并且希望主键 ID1 开始重新计数,可以直接使用 `TRUNCATE` 命令。此操作会删除所有数据并重置自增计数器[^2]。 ```sql TRUNCATE TABLE your_table; ``` 执行该语句后,下次插入的新记录将从 ID = 1 开始。 ### 使用 `DELETE` 和 `ALTER TABLE` 重置自增主键 如果仅需删除部分数据或无法使用 `TRUNCATE`,则可以通过先清空数据再手动设置自增起始值的方式完成: ```sql DELETE FROM your_table; ALTER TABLE your_table AUTO_INCREMENT = 1; ``` 这种方式同样可以确保新插入的数据主键 ID1 开始[^2]。 ### 保留数据并重新排列主键 ID 当需要保留现有数据但重新排序主键 ID 时,可以采用变量更新的方法来实现 ID 的连续性调整。例如,通过用户变量 `@new_id` 来为每行分配新的 ID,并按原始顺序更新表中的主键字段[^1]: ```sql SET @new_id = 0; UPDATE your_table SET id = (@new_id := @new_id + 1) ORDER BY id; ``` 此方法适用于已有数据的情况下,使主键 ID 重新1 开始递增。需要注意的是,这种方法不会影响 `AUTO_INCREMENT` 的计数器,因此后续插入的新记录可能不会紧接着最后一个 ID 进行编号。为了保证一致性,建议在此操作之后也手动设置 `AUTO_INCREMENT` 起始值[^1]: ```sql ALTER TABLE your_table AUTO_INCREMENT = (SELECT COUNT(*) FROM your_table) + 1; ``` ### 注意事项 - 在进行上述任何操作之前,请确保已经对相关数据进行了备份,以防止意外丢失重要信息。 - 若表结构中设置了自定义的起始值,则 `TRUNCATE` 或 `ALTER TABLE ... AUTO_INCREMENT = 1` 可能不会生效,此时需要检查并修改表定义中的自增属性。 - 对于存在外键约束的表,在执行 `TRUNCATE` 或 `DELETE` 操作时可能会受到限制,需先处理相关的依赖关系。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值