精华内容
下载资源
问答
  • mysql创建自增主键
    2021-10-05 12:30:58

    0 前言

    自增主键是数据库中最常用的功能之一,这里简单介绍一下 MySQL 自增主键的内部原理、加锁方式以及临界值的处理方式。

    1 内部原理

    • 自增主键并不会固化存储,每次 MySQL Server 启动都会进行初始化,然后存储在内存中。
    • 每次 insert 之前就会对这个数字进行 +1。
    • 自增主键初始化的方式为 select max(max(id), 1) from table_name。

    2 加锁方式

    • 互斥锁:如果是一个没有指定 id 的 insert 时,只会在获取 id 时对自增主键加一个互斥锁,锁很短。
    • 事务全程锁:如果是一个指定 id 的 insert,则会在 insert 事务提交后才释放锁,自增主键被锁的时间是整个事务执行的时间。
    • 如果使用了 insert into xxx select * from yyy; 或者 load file xxx;,则自增主键锁会持续到语句执行结束,会阻塞普通的 insert,是一个风险点。

    3 临界值

    • 默认从 1 开始,当达到该类型的 MAX_VALUE 之后就会不再自增,如果还有新的 insert 进来,就会产生主键冲突异常。
    • 可以通过 alter table AUTO_INCREMENT=value; 来指定自增主键,但 value 只能为非负数。
    更多相关内容
  • 1、创建自增主键的表: `ID` int(11) NOT NULL AUTO_INCREMENT

    MySQL(9):Mysql关于自增主键

    1、Mysql创建自增主键的表

    `ID` int(11) NOT NULL AUTO_INCREMENT

    CREATE TABLE `USERS222` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `EMAIL` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `AGE` int(11) DEFAULT NULL,
      `SEX` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `ID_CARD` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `MOBILE_PHONE` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `VISA_CARD` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `OFFICER_CARD` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      `ADDRESS` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
      PRIMARY KEY (`ID`) USING BTREE
    ) 

    2、如果创建的表的主键不是自增主键

    2.1、方法1,通过navicat工具进入表设计页面,选择主键列,勾选:自动递增

    2.2、通过sql修改主键为自增主键

    alter table tb_name modify id int auto_increment PRIMARY KEY

    例如,已存在id并是主键,修改主键id为自增主键

    alter table USERS222 modify id int auto_increment

    例如:已存在id,但id不是主键,修改id为自增主键

    alter table USERS222 modify id int auto_increment PRIMARY KEY

    展开全文
  • MySQL [xxx_mall]> alter table shop_base_info AUTO_INCREMENT=11000;Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0MySQL [xxx_mall]> SELECT-> auto_increment-> FRO...

    MySQL [xxx_mall]> alter table shop_base_info  AUTO_INCREMENT=11000;

    Query OK, 0 rows affected (0.01 sec)

    Records: 0  Duplicates: 0  Warnings: 0

    MySQL [xxx_mall]> SELECT

    -> auto_increment

    -> FROM

    -> information_schema.`TABLES`

    -> WHERE

    -> table_name = 'shop_base_info';

    +----------------+

    | auto_increment |

    +----------------+

    |          11001 |

    +----------------+

    1 rows in set (0.00 sec)

    PS: 如果数据不足11000条,不影响前面的数据 ; 如果数据大于11000,则设置无效

    INNODB自增主键的一些问题 vs mysql获得自增字段下一个值

    今天发现 批量插入下,自增主键不连续了....... InnoDB AUTO_INCREMENT Lock Modes This section describes the behavior of A ...

    sql server 获取自增列下一个值或者获取指定表的主键值

    IDENT_CURRENT('TableName')为当前的最大标识值, IDENT_INCR('TableName')为设置的标识值增量, 两者相加即为下一个标识值 如: SELECT IDENT_ ...

    mysql获得自增字段下一个值

    初次研究: 表: sql: show table status from carsale_db LIKE 'tb_car' 结果: 想办法取得这其中的值.... 在Internet上找到这个资料: M ...

    mysql自增id的下一个值

    SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name='nst_t_department' AND table_s ...

    Mysql 修改字段长度、修改列名、新增列、修改自增主键起始值

    alter table 表名 modify column 字段名 类型; 例如 数据库中user表 name字段是varchar(30) 可以用 ) ; --修改字段长度 )--修改表列名 ); -- ...

    【数据库_Mysql】MySQL—修改表时给表添加联合主键约束

    添加语法如下: “ALTER TABLE table_name ADD CONSTRAINT pk_table_name PRIMARY KEY(列名1,列名2):” [示例1]假设订房信息表(O ...

    使用mybatis插入自增主键ID的数据后返回自增的ID

    在开发中碰到用户注册的功能需要用到用户ID,但是用户ID是数据库自增生成的,这种情况上网查询后使用下面的方式配置mybatis的insert语句可以解决: 111 111&l ...

    mongodb----修改器

    $inc:增加或者减少指定键值,如果键不存在,就创建一个键. $set:指定一个健的值,如果键不存在,就创建一个键. $unset:删除指定的键. $push:向指定的数组末尾加添加一个元素,如果数组 ...

    跨域访问技术CORS(Cross-Origin Resource Sharing)简介

    为什么要用CORS? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttp ...

    robotframework+selenium搭配chrome浏览器,web测试案例(搭建篇)

    这两天发布版本 做的事情有点多,都没有时间努力学习了,先给自己个差评,今天折腾了一天, 把robotframework 和 selenium 还有appnium 都研究了一下 ,大概有个谱,先说说we ...

    【转】Python之向日志输出中添加上下文信息

    [转]Python之向日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定 ...

    matlab读取excel里的数据并用imagesc画图

    把矩阵数据保存在excel里 比如文件为 a.xlsx 通过下面的程序读取 a=xlsread('\文件保存的目录\a.xlsx'); figure(1); imagesc(a) colormap(h ...

    J2SE 8的Lambda --- Comparator

    Person[] personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Per ...

    展开全文
  • MySQL 自增主键

    千次阅读 2022-08-02 01:13:16
    1、创建创建主键的时候可以使用AUTO_INCREMENT关键字进行自增主键设置,设置之后,每插入一条数据之后主键都会自动累加1 使用AUTO_INCREMENT=100可以在表级别设定偏移量,比如这里设定为100,即从100开始累加 2、...

    1、创建

    在创建主键的时候可以使用AUTO_INCREMENT关键字进行自增主键设置,设置之后,每插入一条数据之后主键都会自动累加1

    使用AUTO_INCREMENT=100可以在表级别设定偏移量,比如这里设定为100,即从100开始累加

    2、修改AUTO_INCREMENT值

    ALTER TABLE tableName AUTO_INCREMENT = n
    

    3、自增主键在innodb引擎与myisam引擎差别

    现象

    重启后,innodb采用当前最大索引值,myisam采用建表以来最大索引值。

    比如,table_innodb当前最大索引为8,删除最后一条,当前最大为7,重启,table_innodb索引会从8开始,而不是9。

    同样的操作,table_myisam重启之后会从9开始

    Mysql8.0之后得以修复,innodb与myisam引擎表现一致

    原因

    innodb将AUTO_INCREMENT值存储在内存里面,并没有做持久化

    myisam会将AUTO_INCREMENT持久化存放在磁盘里

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

    展开全文
  • MySQL自增主键VS非自增主键

    千次阅读 2020-05-29 09:22:36
    使用自增主键的好处 每次插入新的记录,记录就会顺序的添加到当前索引节点的后续位置,当一页写满,就会自动开辟一共新的页。 使用非自增主键坏处 由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有...
  • mysql5.7自增主键的坑

    2022-05-21 15:02:18
    mysql5.7自增主键有坑
  • Mysql自增主键 自增主键如何创建 CREATE TABLE `blog`.`Idv_Inf_Tbl` ( `Idv_Inf_No` INT(11) NOT NULL AUTO_INCREMENT, `Acct_No` VARCHAR(45) NOT NULL, `nickname`VARCHAR(45) NOT NULL, PRIMARY KEY (`Idv_...
  • Mysql 自增主键

    千次阅读 2021-05-30 18:51:55
    整型结合属性 auto_increment,可以实现自增功能,但在表结构设计时用自增主键,希望你特别要注意以下两点,若不注意,可能会对业务造成灾难性的打击: 用 BIGINT 做主键,而不是 INT; 自增值并不持久化,可能会...
  • MySQL获取自增主键Id

    千次阅读 2020-02-11 16:37:52
    mysql和oracle插入的时候有一个很大的区别是,oracle通过获取序列的方式得到主键mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法1:使用last_insert_id mysql...
  • mysql作为最常用的关系型数据库,无论是在应用还是在面试中都是必须掌握的技能。
  • 一、自增值保存位置 我们创建一个表 t,其中 id 是自增主键字段、c 是唯一索引。 CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`...
  • MySQL自增主键详解

    千次阅读 2021-01-18 19:35:11
    不同的引擎对于自增值的保存策略不同1.MyISAM引擎的自增值保存在数据文件中2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的...
  • MySQL常用数据类型 整数类型 实数类型 字符类型 日期类型 整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT 占用空间 占用字节 有符号位表示范围 无符号位表示范围 TINYINT 1字节 -128~127 0~255 ...
  • MySQL设置自增主键

    千次阅读 2022-01-10 07:53:01
    1.如何设置自增主键 很简单,只需要在主键后面添加AUTO_INCREMENT关键字就行了 CREATE TABLE `user`( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(10), `password` VARCHAR(20) ); 2.插入数据时指定...
  • mysql增加自增主键

    千次阅读 2019-11-01 13:40:06
    原有数据已有主键,想增加自增字段为主键: alter table face_user_info add primary key (iid int auto_increment); ALTER TABLE face_user_info ADD new_field_id int(5) not null auto_increment ,ADD primary ...
  • MYSQL自增主键ID重置

    千次阅读 2021-08-10 17:02:53
    MYSQL创建一个带有自增主键ID的表时,通常在删除数据时,导致自增主键不连续了。使用下面的SQL脚本可以重置主键。 SET @tableName = 'table_name'; SET @rownum = 0; UPDATE @tableName SET id = @rownum := @...
  • 测试环境:MySQL 5.7创建测试表:mysql>createtabletest1->(idbigintauto_increment,->aaavarchar(40),->PRIMARYkey(id)->);QueryOK,0rowsaffected(0.01sec)mysql>createtabletest2->...
  • MySQL中不连续的主键又是一个工程设计向性能低头的例子,牺牲主键的连续性来支持数据的并发插入,最终提高了MySQL服务的吞吐量,作者在几年前刚刚使用MySQL时就遇到过这个问题,但是当时并没有深究背后的原因,今天...
  • 转自:微点阅读 ...在关系型数据库中,我们会选择记录中多个字段的最小子集作为该记录在表中的唯一标识符[^1],根据关系型数据库对主键的定义,我们既可以选择单个列作为主键,也可以选择多个
  • mysql自增主键设置

    千次阅读 2020-12-29 15:20:34
    mysql自增主键设置 在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。 默认情况下,在MYSQL中AUTO_INCREMENT的初始值是1,每新增一条记录...
  • mysql自增主键详解

    千次阅读 2021-04-08 23:22:30
    文章目录什么是自增主键自增主键的优点好处?...而且,自增主键是整数型,单调递增,对创建索引也十分友好, 自增主键的优点好处? 自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧
  • mysql数据库获得自增主键 在业务中很多时候需要将查询的数据的主键获得到,才能进行后续的关联关系等,但是该如何获得新添加数据的主键尼? 首先,必须通过预编译的方式执行该插入语句 通过数据库连接创建预编译...
  • mysql 变更自增主键id起始值

    千次阅读 2020-04-03 15:12:57
    NOT NULL COMMENT '用户名', `age` int(11) NOT NULL COMMENT '年龄', `create_datetime` datetime NOT NULL COMMENT '创建时间', `update_datetime` datetime NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`) ) ...
  • mysql手动获取自增主键的方法:通过创建存储过程外加函数的方式维护一张sequences表来获取数据,代码为【last_number = last_number + increment_by】。mysql手动获取自增主键的方法:通过创建存储过程外加函数的...
  • MySQL自增ID(主键) 用完了,怎么办? 如果用 int unsigned (int,4个字节 ), 我们可以算下最大当前声明的自增ID最大是多少,由于这里定义的是 int unsigned,所以最大可以达到2的32幂次方 – 1 = 4294967295。 ...
  • 一、全局序列号全局序列号是MyCAT提供的一个新功能,为了实现分库分表情况下,表的主键是全局唯一,而默认的MySQL的自增长主键无法满足这个要求。全局序列号的语法符合标准SQL规范,其格式为:next value for ...
  • MySQL自增主键auto_increment原理; MySQL的innodb_autoinc_lock_mode参数说明; MySQL的AUTO-INC锁原理; 自增主键出现间隙不连续现象的定位;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,039
精华内容 27,615
关键字:

mysql创建自增主键

mysql 订阅