关于mysql数据库的问题

图片说明


id是用自增长的方式插入的,请问为什么29没有出现呢,其它很多id号也没有,是什么原因呢?

还有,在字段名name中怎样引用id号呢?
比如,我想让id=25的这条记录的name的值变成shiyongjin25, 其它的也类似操作,应该怎样输入mysql命令呢?

如果你对表有删除、修改,那么会导致跳号。一些查询内置的事务也会造成跳号,如果你要编号连续,用行号语句,而不是自动增加id

 首先,可以在ID设置为自己定义的方式,每次插入操作,先查询select max(id),得到当前最大的ID然后对这个id+1,就是当前你需要新插入的ID.
其次,数据库结果设计的时候,主键ID都是没有实际意义的ID,是否连续、是否自增,获取直接是UUID的字符串格式,都没有问题,所以使用mysql
的自增策略,没有影响的。真正的业务主键,都是不作为表的真正主键的。就是表中通常定义两个主键:真正的主键UUID+业务主键(student_no)例如啊。

你如果在测试的时候执行了删除操作就不会出现那些id了

可能楼上的描述你不是很懂,是你的表设计的问题,代码没有添加自动跟进数据库,去百度一下如果自动跟进数据库的变动。

首先,如果你的 di 是自增长列的情况下,没有按照顺序插入数据,可能就是你插入到了 28 时,你使用 delete 删除了 28,后继续插入数据,此时 id 列会从 29 开始继续往上加,因为在 mysql 底层数据,在使用 delete 时其实没有真正的删除掉数据,只是给了个标志位,你看不到而已。

第二个问题就比较简单了。首先你说的这个情况,应该算不上引用,只是查询出结果;
select id,concat(name,id),grade,enail,salary from Xxxuser;