mysql中自增auto_increment功能的相关设置及问题
mysql 问题 设置 功能 相关 Auto 中自增 increment
2023-06-13 09:14:42 时间
mysql中的自增auto_increment功能相信每位phper都用过,也都知道如何设置字段为自增字段,但并不是所有phper都知道auto_increment的起始值和递增量是如何设置的!本文就为大家分享一下mysql字段自增功能的具体查看及设置方法。
涉及知识介绍:
mysql服务器维护着2种mysql的系统参数(系统变量):全局变量(globalvariables)和会话变量(sessionvariables)。它们的含义与区别如其各占的名称所示,sessionvariables是在session级别的,对其的变更只会影响到本session;globalvariables是系统级别的,对其的变更会影响所有新session(变更时已经存在session不受影响)至下次mysqlserver重启动。注意它的变更影响不能跨重启,要想再mysqlserver重启时也使用新的值,那么就只有通过在命令行指定变量选项或者更改选项文件来指定,而通过SET变更是达不到跨重启的。
每一个系统变量都有一个默认值,这个默认值是在编译mysql系统的时候确定的。对系统变量的指定,一般可以在server启动的时候在命令行指定选项或者通过选项文件来指定,当然,大部分的系统变量,可以在系统的运行时,通过set命令指定其值。
首先需要介绍一下查看mysql中全局变量的方法:
showvariableslike"%xxx%";<==>showsessionvariableslike"%xxx%";//session会话变量
showglobalvariableslike"%xxx%";//全局变量
例如查看与auto_increment相关的变量方法如下:
showvariableslike"%auto_increment%";
一般情况结果为:
第一个变量名auto_increment_increment就是指字段一次递增多少;
第二个变量名auto_increment_offset指自增字段的起始值。
比如,有个表test,字段id为主键,自增;
如果auto_increment_offset=1,并且auto_increment_increment=1,那么向表中插入第一条数据时,则该条数据的id=1,第二条id=2,第三条id=3以此类推……
如果auto_increment_offset=2,并且auto_increment_increment=10,那么向表中插入第一条数据时,则该条数据的id=2,第二条id=12,第三条id=22以此类推……
注意:如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。
了解如何查看及其含义以后,剩下的就是如何修改这些变量的值了,修改也非常简单,语句格式如下:
setauto_increment_increment=10
就这么简单就把变量auto_increment_increment的值设置成了10
—————————————————————————————————————
补充一个看似简单但又不是很简单的问题:
问:如果有一张表,里面有个字段为id的自增主键,当已经向表里面插入了10条数据之后,删除了id为8,9,10的数据,再把mysql重启,之后再插入一条数据,那么这条数据的id值应该是多少,是8,还是11?
答:如果表的类型为MyISAM,那么是11。如果表的类型为InnoDB,则id为8。
这是因为两种类型的存储引擎所存储的最大ID记录的方式不同,MyISAM表将最大的ID记录到了数据文件里,重启mysql自增主键的最大ID值也不会丢失;
而InnoDB则是把最大的ID值记录到了内存中,所以重启mysql或者对表进行了OPTIMIZE操作后,最大ID值将会丢失。
相关文章
- 解决MYSQL命令行解决乱码问题(mysql乱码命令行)
- MySQL设置外键以实现表之间的关联(mysql建表时设置外键)
- MySQL外键查询:建立数据表合理关系(mysql外键查询)
- 深入探究MySQL字符集的变化与特点(查询mysql字符集)
- 破解MySQL数据入库Redis的技巧(mysql写入redis)
- MySQL数据库统计:解析数据背后的真正价值(mysql数据库统计)
- 如何将 MySQL 表结构进行合并? 或 MySQL 表结构合并的详细步骤(mysql表结构合并)
- 快速稳定,自定义设置:MySQL下载镜像推荐(mysql下载镜像)
- MySQL账号密码修改指南(mysql帐号密码)
- MySQL监听端口分析及更改方法(mysql监听的端口)
- 解析MySQL无法登陆: 探究可能的解决方案(mysql不能登陆)
- MySQL联合查询指南:教您如何使用联合查询优化数据库检索(mysql数据库联合查询)
- 账号密码MySQL查看用户账号密码的简易指南(mysql查看用户)
- MySQL的严格模式下,如何查看关键信息(mysql 严格模式查看)
- CMS极速打开MySQL数据库大门(cms打开mysql)
- MySQL密码输错自动退回问题解决方法(mysql一输密码就退了)
- 解决MySQL连接中断问题mysqlping重连实现(mysql_ping重连)
- MySQL比较功能利用不同行区别数据(mysql不同行作比较)
- 解决mysql不同网段访问问题,实现多维联网连接(mysql 不同网段访问)
- MySQL 56下载安装配置全攻略(mysql下载安装5.6)
- 解决MySQL打开问题的技巧(mysql不能正常打开)
- 解决MySQL数据库问题如何避免不能为空代码错误(mysql不能为空代码)
- 解决MySQL不显示语句的问题(mysql不显示语句)
- 如何解决MySQL中定时任务不显示的问题(mysql不显示定时任务)
- MYSQL的binary解决mysql数据大小写敏感问题的方法