mysql删除重复的数据保留一条SQL之Mysql删除表数据并重置ID⾃增⽬录
1. 前⾔
2. 解决⽅法
2.1 清空数据并重定义⾃增
2.2 删表数据并重定位⾃增
2.3 导出表数据改表结构
3. ⾃增属性差异
3.1 MyISAM
3.2 InnoDb
3.3注意事项
1.前⾔
最近开发的时候,碰到了个错误,将数据错误导⼊到数据库,导致该表的数据⾃增ID变得很⼤,当删除数据时候,该表的⾃增ID不再是我想要的从1开始,所以我希望对删表数据时候也可以重置ID操作,下⾯介绍⼏种删除表数据,并让⾃增ID重置为1的⽅法。
2.解决⽅法
2.1清空数据并重定义⾃增
truncate table 你的表名;
//这样不但将数据全部删除,⽽且重新定位⾃增的字段
2.2删表数据并重定位⾃增
delete from 你的表名;
dbcc checkident(你的表名,reseed,0) ;
//重新定位⾃增的字段,让它从1开始
2.3导出表数据改表结构
如果要保存该表数据作,当⼜想将数据从1开始导⼊,⽤⼯具phpmyadmin导出数据库为sql⽂件,然后编辑sql⽂件,将其中的⾃增下⼀个id号改成想要的值,再导⼊即可。
3.⾃增属性差异
主要讲两款引擎:MyISAM和InnoDb
3.1 MyISAM
删除最⼤编号的记录后,该编号不可重⽤。
可在建表时可⽤“AUTO_INCREMENT=n”选项来指定⼀个⾃增的初始值。
可⽤alter table table_name AUTO_INCREMENT=n命令来重设⾃增的起始值。
可使⽤复合索引在同⼀个数据表⾥创建多个相互独⽴的⾃增序列。
3.2 InnoDb
不可通过CREATE TABLE OR ALTER TABLE的AUTO_INCREMENT=n选项来改变⾃增初始值。
不可重⽤编号。
不⽀持在⼀个数据表⾥使⽤复合索引来⽣成多个互不⼲扰的序列编号。
3.3注意事项
在使⽤AUTO_INCREMENT时,应注意以下⼏点:
AUTO_INCREMENT是数据列的⼀种属性,只适⽤于整数类型数据列。
设置AUTO_INCREMENT属性的数据列应该是⼀个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号数量可增加⼀倍。
AUTO_INCREMENT数据列必须有唯⼀索引,以避免序号重复。
AUTO_INCREMENT数据列必须具备NOT NULL属性。
AUTO_INCREMENT数据列序号的最⼤值受该列的数据类型约束,如TINYINT数据列的最⼤编号是127,如加上UNSIGNED,则最⼤为255。⼀旦达到上限,AUTO_INCREMENT就会失效。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论