首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL字段增长AUTO_INCREMENT用法实例详解

本文使用的MySQL版本为官方社区版 5.7.24。...该锁的持有时间到语句结束(而不是到事务结束,一个事务可能包含多条语句),它能够确保为有增属性列在 INSERT 一行或者多行数据时分配连续递增的值。...无论 AUTO_INCREMENT 处于哪种锁模式下,增列分配的值如果大于增列所属字段类型的最大值,则增列分配值机制就不会生效。...混合模式插入增列值分配 测试表: -- t1表:表无数据,但增列下一个分配值从101开始 (root@localhost) [test] > show create table t1\G; ***...AUTO_INCREMENT计数器的初始化 当为一张InnoDB表指定增列时,此时表在数据字典维护着一个特殊的计数器为增列分配值,名称为 auto_increment 计数器,这个计数器是存储内存

5.2K20

MySQL增长属性的锁

01 MySQL增长属性的锁 我们在设计表结构的时候,经常会对某一列设置增长的值,它的作用是可以帮助我们自动递增某一列的值,增长的属性经常被设置在主键列上,原因是主键必须具有唯一性,而自动增长可以避免重复...在innodb存储引擎,针对每个增长字段都有一个增长的计数器,在对还有增长列的表进行插入操作的时候,这个计数器会被初始化,在mysql,我们可以执行下面的语句来得到这个计数器的当前值: select...max(增长列) from table; 当我们进行插入操作的时候,该操作会根据这个增长的计数器的值+1赋予增长的列,这个操作我们称之为auto-inc Locking,也就是增长锁,...MySQL5.1.22版本对这种锁进行了升级,提出了一个参数innodb_autoinc_lock_mode的参数来控制增长的模式,这个参数默认值是1,总共可以设置三个值0,1,2 mysql--dba_admin...除此之外,在innodb增长的列必须是索引,而且必须是索引的第一个列,如果不是,则会报错,myisam没有这个问题。

2.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql如何修改字段类型_MySQL怎么修改字段类型?「建议收藏」

    MySQL,可以通过alter table语句来修改表中一个字段的数据类型。下面本篇文章就来带大家了解一下alter table语句,介绍如何修改字段类型,希望对大家有所帮助。...在MySQL,alter table语句是用于在已有的表添加、修改或删除列(字段)的。...1、添加字段(列)alter table 表名 add 字段名 数据类型 示例:在表 “Persons” 添加一个名为 “Birthday” 的新列,数据类型为“date”alter table Persons...alter table 表名 alter column 字段名 数据类型 示例:将表 “Persons” 的 “Birthday” 列的数据类型改为“year”alter table Persons...4、删除字段alter table 表名 drop column 字段名 示例:删除 “Person” 表的 “Birthday” 列alter table Persons drop column Birthday

    27.8K20

    数据库设置列字段增(Oracle和Mysql

    oracle 1、创建一个序列,然后在需要增的字段里使用它 drop sequence seq_stu create sequence seq_stu start with 22 Increment...--这是最简单的一种序列的创建方式,指定了序列从1开始,每次使用后都增1 drop sequence seq_stu; --删除序列(seq_stu为序列名) 2、增数据的插入(序列名.nextval...) insert into stu(stu_id) values(seq_stu.nextval) 如何重置数据表增 1、删除该序列,再重新创建该序列即可 2、 truncate table...表名; 注意:截断表,即删除所有数据,只保留表结构 Mysql 创建表时直接制定增列/字段 1、通过点击点击相关表选择“设计表”进行设置 ?...1000开始 如何重置数据表增 TRUNCATE TABLE 表名; 注意:会删除表的数据,只有在MySQL,TABLE字段可省略

    7.3K20

    面试官:MySQL增主键用完了怎么办?

    在面试,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用增主键还是UUID?" 你:"用的是增主键" 面试官:"为什么是增主键?"...于是,今天我们就来谈一谈,这个增主键用完了该怎么办! 正文 简单版 我们先明白一点,在mysql,Int整型的范围如下 ? 我们以无符号整型为例,存储范围为0~4294967295,约43亿!...然而,如果你在面试的回答如果是 你:"简单啊,把增主键的类型改为BigInt类型就好了!" 接下来,面试官可以问你一个更坑的问题! 面试官:"你在线上怎么修改列的数据类型的?"...怎么改 目前业内在线修改表结构的方案,据我了解,一般有如下三种 方式一:使用mysql5.6+提供的在线修改功能 所谓的mysql自己提供的功能也就是mysql自己原生的语句,例如我们要修改原字段名称及类型...假设啊,你的表里的字段为有符号的Int类型的,也就是说,你的字段范围为-2147483648到2147483648。

    9.1K31

    MySQL表的完整性约束

    概览   为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库存储的数据正确、有效...设置严格模式: 不支持对not null字段插入null值 不支持对增长字段插入”值 不支持text字段有默认值 直接在mysql中生效(重启失效): mysql>set sql_mode...返回顶部 PRIMARY KEY 主键为了保证表的每一条数据的该字段都是表格的唯一值。换言之,它是用来独一无二地确认一个表格的每一行数据。 主键可以包含一个字段或多个字段。...AUTO_INCREMENT 约束字段为自动增长,被约束的字段必须同时被key约束 ? ?...,在用delete删除后,再插入值,该字段仍按照删除前的位置继续增长 mysql> delete from student; Query OK, 4 rows affected (0.00 sec)

    3.5K20

    MySQLcount(*)、count(主键id)、count(字段)和count(1)那种效率更高?

    MySQL ,COUNT 函数是一个非常常用的聚合函数,它用于计算列或表达式在查询结果中出现的次数。...这里需要注意的是,如果主键是一个增长列,那么 COUNT(*) 和 COUNT(主键id) 得到的结果是相同的,因为增长列的值必定不为 NULL。那么,这两种写法的效率如何呢?...除此之外,还有一个需要注意的地方,就是在某些数据库,COUNT(字段) 可能比 COUNT(1) 更快。...这是因为 COUNT(1) 是常量,在大多数情况下都不需要执行计算和类型转换,但是在某些数据库(例如 Oracle),COUNT(字段) 的运行会比 COUNT(1) 更快,因为这个字段已经处于缓存状态...在一些数据库,COUNT(字段) 可能比 COUNT(1) 更快。因此,在实际应用,我们可以根据具体的情况来选择不同的写法,从而获得更好的查询性能。

    1.4K30

    MySQL 约束

    affected (0.06 sec) 1.4 自动增长(auto_increment) 1.4.1 概述   在 MySQL ,当主键定义为增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值...每增加一条记录,主键会自动以相同的步长进行增长。通过给字段添加 AUTO_INCREMENT 属性来实现主键增长。...一个表只能有一个字段使用 AUTO_INCREMENT 约束,且该字段必须有唯一索引,以避免序号重复(即自动增长只能给 primary key 或者 unique 添加,一张表只能添加一个)。...增长列当前值存储在内存,数据库每次重启之后,会查询当前表增列的最大值作为当前值。  ♞ AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1。  ...主表删除条记录时,从表与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表主键的某个值。

    3K31

    MySQL系列:(3)MySQL加强

    CREATE TABLE T_Persons( Id INT PRIMARY KEY, NAME NVARCHAR(20), Gender NVARCHAR(2)  ) 2.6、增长 作用: 自动递增...------------------------ CREATE TABLE T_Persons( Id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,-- 增长...,从0开始  ZEROFILL 零填充 NAME NVARCHAR(20), Gender NVARCHAR(2)  ) DELETE FROM T_Persons; -- 不能影响增长约束...TRUNCATE TABLE T_Persons;-- 可以影响增长约束 2.7、外键 作用:约束两种表的数据 语法:CONSTRAINT 外键名 FOREIGN KEY(副表的外键字段) REFERENCES...用户权限 MySQL数据库的所有用户都存储在mysql.user表内 其中,root用户拥有所有权限(可以干任何事情); 而权限账户,只拥有部分权限(CURD)例如,只能操作某个数据库的张表 1)如何修改

    74610

    初识MySQL

    02.如果放在内存,下次登陆还使用之前注册的用户名和密码,能登陆吗? 显然是不能的! 因为程序一旦运行完毕,内存的数据也随之消失! 怎么办?...举个例子,我们在表创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。...应该是“当表只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。 为什么增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。...若数值字段指定了ZEROFILL属性, 将自动添加UNSIGNED属性!  ...6.自动增长   auto_increment                01.一般用于主键,默认增1                02.是整数类型                03.可设置初始值和步长

    1.3K70

    关于增id 你可能还不知道

    导读:在使用MySQL建表时,我们通常会创建一个字段(AUTO_INCREMENT),并以此字段作为主键。本篇文章将以问答的形式讲述关于增id的一切。...综上而言:当我们使用增列作为主键时,存取效率是最高的。 2.增列id一定是连续的吗? 增id是增长的 不一定连续。...在 MySQL 8.0 版本,将自增值的变更记录在了 redo log ,重启的时候依靠 redo log 恢复重启之前的值。...增id是整型字段,我们常用int类型来定义增长id,而int类型有上限 即增长id也是有上限的。...4.关于增列 我们该怎么维护? 维护方面主要提供以下2点建议: 1.字段类型选择方面:推荐使用int无符号类型,若可预测该表数据量将非常大 可改用bigint无符号类型。

    1.3K30

    MySQL 约束介绍

    1、非空约束 限定某个字段/列的值不允许为空,空字符串’'不等于NULL,0也不等于NULL CREATE TABLE 表名称( 字段名 数据类型, 字段名 数据类型 NOT NULL,...,该字段允许为空 ALTER TABLE 表名称 MODIFY 字段名 数据类型 2、 唯一约束 用来限制某个字段/列的值不能重复 同一个表可以有多个唯一约束 唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一...MySQL会给唯一约束的列上默认创建一个唯一索引。...PRIMARY KEY(字段名1,字段名2); 4、增长约束 某个字段的值增 一个表最多只能有一个增长列 当需要产生唯一标识符或顺序值时,可设置增长 增长列约束的列必须是键列(主键列,唯一键列...#(从表的某个字段)的字段名可以与主表名(被参考字段)的字段名一样,也可以不一样 -- FOREIGN KEY: 在表级指定子表的列 -- REFERENCES: 标示在父表的列 约束等级 Cascade

    1.6K41

    mysql常见的建表选项和约束

    保证数据的正确性和一致性,统称为数据完整性 约束也可以防止一个表被删除 MySQL的约束保存在information_schema.table_constraints,可以通过该表查询约束信息 常见的约束类型...not null非空,指定列不为空(注意区分空和空格的关系) unique:唯一约束,指定列和几列组合的数据不能重复 primary key:主键约束,指定列的数据不能重复,唯一 foreign...主键名还是显示primary foreign key外键约束 参照完整性约束,保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或者是两个表的两个字段之间的参照关系 注意: 具有外键约束的列的值不能随便给...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql...1,不会覆盖原来删除的编号 列的数值自动增长,列的类型只能是整数类型 通常给主键添加增长约束

    14510

    MyBatis基础入门

    绝对不能将 SqlSession 实例的引用放在一个类的静态字段甚至是实例字段。... 5 插入数据后获取自动增长的主键ID 5.1 MySQL数据库的auto_increatement...实现主键增长         在许多数据库管理系统(如MySQL和SQL Server),可以把在建表时把主键定义为增长的整数,插入数据时不需要提供该主键,由数据库维护其增长逻辑。...(sequence)实现增长       Oracle数据库并没有提供表字段增长设置,如果是整型字段,可以通过序列(sequence)来获取自增长值,再插入到数据库。        ...以下示例假设Oracle数据库中有一个名为seq_cinema_cate的序列,演示了如何实现插入增长并返回增长ID。

    39930

    学会Mysql第三天

    2.MYSQL字段长度最长为65535个字节,如果字段值为空,那么系统会使用一个字节来存储NULL值,有效的数据长度就变成了65534个字节 auto_increment 增长属性 在列数据没有给定指定数据的时候...null comment'密码' )charset utf8; 修改自增长的值 1.增长一旦触发使用之后会自动在表选项增加一个选项(一张表最多有一个增长字段) 2.表选项可以通过修改表结构来实现...alter table my_auto modify id int auto_increment --创建表之后增加增长 初始设置 系统,专门有一组变量来存储增长的初始值和步长值 show...variables like 'auto_increment%'; --查看增长的初始值和步长值 细节问题 1.一个表里面只有一个增长 2.如果数据插入给定了值,那么增长不会表现出来...3.增长在修改的时候可以较大,但是不可以比当前已有的增长字段的值小 unique key 唯一键属性 1.用来保证字段的数据是惟一的,与主键的功能类似,但是一个表可以有多个唯一键 2.允许字段值为

    57010

    Mysql Innodb 性能优化

    概述 innodb 作为最主流使用的 mysql 存储引擎,尤其在新版本的 mysql MyISAM 存储引擎被废除,更加提升了 innodb 如日中天的地位。...那么,作为 mysql 的使用者,如何优化 innodb 使之发挥更强大的性能,就成为了必修课。 2....: 如果分配过大,那么会导致 mysql 占用内存过大,使机器 swap 增多,导致查询变慢 如果分配过小,又会由于缓存无法被充分利用而致使磁盘io增多,降低性能 通过 show engine innodb...采用一个没有业务用途的增属性列作为主键 2. 主键字段值不能进行 update 操作 3. 主键数据类型应尽可能小,使用 smallint 或 int 而不是 bigint 4....主键字段放在数据表的第一列 这样做的好处: 1. 随机 IO 转化为顺序 IO 2. 新增数据主键顺序增长,可以减少 innodb 页的分裂 3.

    1.7K50

    增长列的一个小问题

    01 增长列的一个小问题 之前的文章写了一个小问题,当我们使用增长的方式限定了一个增长字段id以后,如果删除id=7的一条记录,再重新插入新纪录的时候,这个新纪录的id值会是多少?...从最后的show create table语句中可以看出,下一个增长的值是9。...如果想要让这个表在删除条记录之后,插入新记录时候增列保持连续,现在有id为1~7的表,删除id=6和id=7的记录,然后我们需要在插入的时候让增主键从6开始,有一个办法,就是重新启动该MySQL实例...我们首先创建了一个表,这个表没有增列,然后插入id=4的数据,插入之后修改表的id列为增属性,然后再查看该表的增列下一个值,发现自动匹配id=4的下一个值id=5。...这个点也比较重要,如果没有自动匹配的话,增长属性将会从1开始,这样,再插入三条记录之后,这个表就无法再插入记录了,因为id=4的记录已经存在了。

    84030
    领券