• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 解析mysql中的auto_increment的问题

解析mysql中的auto_increment的问题

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql auto increment,mysql increment,auto increment,sql auto increment,sqlite autoincrement等相关知识,希望本文的分享对您有所帮助

今儿在逛论坛时,发现一个看似很简单的问题,却引起了大家的广泛关注:
这是一道很早的面试题:
一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 。
答案:

如果表的类型是MyISAM,那么是18。
因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
如果表的类型是InnoDB,那么是15。
InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。

自己也做了个实验,结果证实了上面的说法。真是惭愧啊,看似简单的问题自己也打错了。

mysql> delete from test1 where id in (10,11,9);
Query OK, 3 rows affected (0.03 sec)

mysql> show create table test1;
 CREATE TABLE `test1` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(10) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=<SPAN style="COLOR: #ff0000">12</SPAN> DEFAULT CHARSET=utf8 |
mysql> exit;
Bye
[root@fsailing1 ~]# service mysqld restart
停止 MySQL:                                               [确定]
启动 MySQL:                                               [确定]
[root@fsailing1 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show create table test1;
| CREATE TABLE `test1` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(10) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=<SPAN style="COLOR: #ff0000">9</SPAN> DEFAULT CHARSET=utf8 |
</div>
2,另外还有一个就是获取当前数据库表的自增字段数。
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析mysql中的auto_increment的问题
  • 怎么重置mysql的自增列AUTO_INCREMENT初时值
  • Mysql auto_increment 重新计数(让id从1开始)
  • mysql中自增auto_increment功能的相关设置及问题
  • MySQL查询和修改auto_increment的方法

相关文章

  • 2018-12-05sqlserver 批量删除存储过程和批量修改存储过程的语句
  • 2018-12-05MySQL字符集是什么?字符集的相关介绍
  • 2017-05-11MySQL获取所有分类的前N条记录
  • 2018-12-05有关共享锁的课程推荐10篇
  • 2017-05-11工作中常用的mysql语句分享 不用php也可以实现的效果
  • 2018-12-05MSSQL 提取汉字实现语句
  • 2018-12-05mysql使用备份工具ibbackup进行数据库备份
  • 2017-05-11MySQL中实现高性能高并发计数器方案(例如文章点击数)
  • 2017-05-11mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句
  • 2018-12-05Excel数据导入Mysql数据库的实现方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 在程序中压缩sql server2000的数据库备份文件的代码
    • 实例详解MySQL5.7中 performance和sys schema中的监控参数
    • .Net下执行sqlcmd的方法
    • 关于MySQL中savepoint语句使用时所出现的错误
    • MySQL数据库安全之防止撰改的方法
    • oracle expdp导出和impdp导入使用方法
    • 对SQL查询方法精彩汇总
    • MySQl数据库必须知道的sql语句
    • cmd中MySQL中文数据乱码问题解决方法
    • 用户"sa"登陆失败 SQLServer 错误18456的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有