AUTO INCREMENT

  • 使用
  • 检索最近自动生成AUTO_INCREMENT值
  • 设置1以外的值开始
  • InnoDB AUTO_INCREMENT 计数器初始化
    • 5.7版本及之前
    • 8.0版本
  • 查询表的大量信息
  • 查询有关数据库中表的信息

使用

AUTO_INCREMENT属性可用于为新行生成唯一标识

没有为该AUTO_INCREMENT 列指定值,因此 MySQL 自动分配了序列号。NO_AUTO_VALUE_ON_ZERO 除非启用 SQL 模式,否则还可以显式为列分配 0 以生成序列号 。

INSERT INTO animals (id,name) VALUES(0,'groundhog');
INSERT INTO animals (id,name) VALUES(NULL,'squirrel');

当将任何其他值插入 AUTO_INCREMENT列时,该列将设置为该值并重置序列,以便下一个自动生成的值从最大的列值开始按顺序排列。

INSERT INTO animals (id,name) VALUES(100,'rabbit');
-- 从101开始
INSERT INTO animals (id,name) VALUES(NULL,'mouse');

检索最近自动生成AUTO_INCREMENT值

可以使用SQL 函数或C API 函数检索

SELECT LAST_INSERT_ID();

设置1以外的值开始

更新现有AUTO_INCREMENT列值也会重置AUTO_INCREMENT 序列,
只能将自增计数器值更改为大于当前最大值的值

ALTER TABLE tbl AUTO_INCREMENT = 100;

若要重新设置值小于当前最大值,可先

  • TRUNCATE TABLE

    • 完全清空一张桌子
  • DELETE FROM
    • 删除部分或全部记录

InnoDB AUTO_INCREMENT 计数器初始化

ALTER TABLE … AUTO_INCREMENT = N只能将自增计数器值更改为大于当前最大值的值。

5.7版本及之前

自动增量计数器存储在主内存中,而不是磁盘上。 要在服务器重新启动后初始化自动增量计数器,InnoDB将在第一次插入包含 AUTO_INCREMENT列的表时执行与以下语句等效的语句。

SELECT MAX(ai_col) FROM table_name FOR UPDATE;

服务器重新启动会取消AUTO_INCREMENT = Ntable 选项的效果,该选项可在CREATE TABLEor ALTER TABLE语句中分别用于设置初始计数器值或更改现有计数器值。

在ROLLBACK 操作后立即重新启动服务器可能会导致重用先前分配给回滚事务的自动增量值,从而有效地回滚当前最大的自动增量值。

8.0版本

服务器重启不会取消 AUTO_INCREMENT = Ntable 选项的效果。如果将自动增量计数器初始化为特定值,或者将自动增量计数器值更改为更大的值,则新值会在服务器重新启动时保持不变。

在ROLLBACK 操作后当前最大的自动增量值被持久化,防止重复使用以前分配的值。

查询表的大量信息

-- db_name:数据库名
-- 'pattern':数据表名
SHOW TABLE STATUS[{FROM | IN} db_name][LIKE 'pattern' | WHERE expr]

查询有关数据库中表的信息

INFORMATION_SCHEMA TABLES 表

-- 'db_name':数据库名
-- 'wild':数据表名
SELECTTABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH,DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT,CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM,CREATE_OPTIONS, TABLE_COMMENTFROM INFORMATION_SCHEMA.TABLESWHERE table_schema = 'db_name'[AND table_name LIKE 'wild']

查询下一个自动递增的值

SELECTAUTO_INCREMENTFROM INFORMATION_SCHEMA.TABLESWHERE table_schema = 'db1'[AND table_name LIKE 'test']

Mysql 自动递增(AUTO INCREMENT) 资料相关推荐

  1. [GBase 8s 教程]GBase 8s 自动增长(AUTO INCREMENT)

    AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字. GBase 8s 使用序列来标识字段的自增长,数据类型有 serial.serial8 和 bigserial . ...

  2. mysql自动递增的id

    mysql的表id自动递增 在于自增主键的分配,是由InnoDB数据字典内部一个计数器来决定的,而该计数器只在内存中维护,并不会持久化到磁盘中.当数据库重启时,该计数器会通过下面这种方式初始化.SEL ...

  3. mysql 自动递增值归零_修改MySQL自动递增值

    [转] Jenkins实战演练之Windows系统节点管理 [前提] 通过(http://my.oschina.net/iware/blog /191818)和 NK3C框架(MyBatis.Duri ...

  4. java mysql 自动提交_详解MySQL与Spring的自动提交(autocommit)

    1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交.如果修改为关闭状态,则执行DML语句之后要手动提交 才能生效 ...

  5. mysql id自动递增两个_MySQL双主一致性架构优化

    转自: MySQL双主一致性架构优化 - osc_avwazwuz的个人空间 - OSCHINA​my.oschina.net 一.双主保证高可用 MySQL数据库集群常使用一主多从,主从同步,读写分 ...

  6. PostgreSQL AUTO INCREMENT(自动增长)

    PostgreSQL AUTO INCREMENT(自动增长) AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字. PostgreSQL 使用序列来标识字段的自增长,数 ...

  7. 如何让mysql的自动递增的字段重新从1开始呢?(

    数据库表自动递增字段在用过一段时间后清空,还是继续从清空后的自动编号开始. 如何才能让这个字段自动从1开始自动递增呢? 下面两个方法偶都试过,很好用: 1 清空所有数据,将自增去掉,存盘,在加上自增, ...

  8. php 数据库 自增值,Mysql应用MySql数据库自动递增值问题

    <Mysql应用MySql数据库自动递增值问题>要点: 本文介绍了Mysql应用MySql数据库自动递增值问题,希望对您有用.如果有疑问,可以联系我们. MYSQL必读 Create TA ...

  9. mysql中递增列_如何使用JDBC在MySQL中创建带有自动递增列的表?

    在创建表时,在某些情况下,我们需要自动生成/增加列的值(例如ID).各种数据库以不同的方式支持此功能. 在MySQL数据库中,您可以使用以下语法声明列自动递增.CREATE TABLE table_n ...

最新文章

  1. cv2.imread 中文路径返回null
  2. c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。
  3. docker安装最新版Jenkins:拉取镜像/创建容器
  4. /etc/group 很好很强大
  5. android jni 释放资源
  6. SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。...
  7. 微信WeixinJSBridge API 屏蔽右上角分享等常用方法
  8. web大作业:简单的学生网页作业源码 基于html css javascript jquery实现智能分控网站
  9. php发微信模板消息,PHP超简单发送微信模板消息
  10. C语言从入门到放弃2022年8月2号
  11. ubuntu桌面模式下,鼠标右键没有新建文档,的解决方法
  12. eclipse工具按键翻译
  13. C# 将方形图片剪切为圆形(winForm)
  14. android截视频播放器,Android视频播放器VPlayer升级:新增截图功能
  15. 计算机专业那种高薪,中科院计算所博士平均年薪都超过50万了,计算机专业真是可以无脑选的那种...
  16. Android拨号盘列表加载机制(原)
  17. txt改成java没反应_为什么我的TXT文档后戳换成java就打不开呢
  18. 拉结尔如何在电脑上玩 拉结尔模拟器玩法教程
  19. 神州数码交换机路由器防火墙ACAP基本配置
  20. 技术拯救的网瘾少年,安全盒子王松的执念 | 宅客故事

热门文章

  1. linux删除内网ip,Linux centOS有2个内网IP地址的原因
  2. 【勝讯云 Finops Crane 集训营】之集群优化实战
  3. 使用java语言基于SMTP协议手写邮件客户端
  4. linux dev/shm,巧用linux服务器下的/dev/shm/,避开磁盘IO不给力!
  5. office和操作系统正版序列号
  6. 上海交大计算机专业的优势,计算机专业高校实力排名,清北稳居前二,上海交大上榜...
  7. 中国饭局里的潜规则,细节——以后很有用哦!(转)
  8. 【export】Linux中export命令介绍,三种方法设置环境变量
  9. 用C#和sql server语言编写的人事管理系统
  10. FastBoot BootLoader Recovery 模式解释