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");

会发现Jack的stuno是没有经过排序的

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’:代表着主键需要从那个数据开始排序)
②:代码中的大小写 (貌似并不区分,我测试了几个大小写情况,添加数据都正常)
③:每次进行删除操作后,如果想按顺序排序,那么都必须要执行一次语句
④:这段代码,执行在删除操作之后

Logo

更多推荐