Mysql数据库添加主键后,删除数据,数据依然排序显示
提示:平常操作数据库时,我们对主键是不需要进行这个操作的,但是测试数据时,有时就是需要这样的操作也是存在的:
tips: 文章较长,关键操作:删除操作后,alter table 表名 AUTO_INCREMENT=N; (N代表主键从什么位置开始排序)
ps:本文的编写是为了,记录自己在学习Mysql数据库时的一些事项
# 一、Mysql数据库的主键
问题原因:Mysql数据库的主键是支持自增的 ,此时我们不断向数据库中插入数据,主键的值便会不断的自增,此时我们删除某一个数据,并不会扰乱主键的递增
二、Mysql主键案例演示
1.给表格添加主键自增
这里我们有一张studentinfo表,添加stuno为主键,代码如下:
范式:alter table 表名 change 列名 列名 数据类型 primary key auto_increment;
alter table studentinfo change stuno stuno int primary key auto_increment;
2.添加数据
我们随便添加几个数据,
因为我们设置了主键自增,那么我们默认插入的数据 stuno是会自己递增,我们不用管
会发现后面添加的三个数据,stuno是自己按照5007-5009排序的
代码如下:
insert into studentinfo(stusex,stuname) values(0,"小二子");
insert into studentinfo(stusex,stuname) values(1,"小李子");
insert into studentinfo(stusex,stuname) values(1,"杨二");
3.删除数据
下面我们删除数据后查看效果
代码如下:
delete from studentinfo where stuno=5007;
delete from studentinfo where stuno=5008;
delete from studentinfo where stuno=5009;
4.再次添加数据
这里我们继续添加数据,便会发现数据,并不会按照5007继续排序
Jack的stuno是5010,并不是从5007开始排序
代码如下:
insert into studentinfo(stusex,stuname) values(0,"Jack");
5.通过下面的代码修改
每次我们每次进行删除数据操作后,都需要在终端执行一次下方的代码语句
代码如下:
范式:alter table 表名 AUTO_INCREMENT=N;
delete from studentinfo where stuno =5010;
alter table studentinfo AUTO_INCREMENT=5006;
6.增加数据查看
执行代码后,添加数据,查看结果
此时的Jack的stuno便是我们想要的5007
代码如下:
insert into studentinfo(stusex,stuname) values(0,"Jack");
总结
提示:
①:需要执行的语句为:范式:alter table 表名 AUTO_INCREMENT=N; ( ‘N’:代表着主键需要从那个数据开始排序)
②:代码中的大小写 (貌似并不区分,我测试了几个大小写情况,添加数据都正常)
③:每次进行删除操作后,如果想按顺序排序,那么都必须要执行一次语句
④:这段代码,执行在删除操作之后