精华内容
下载资源
问答
  • mysql删除主键自增
    千次阅读
    2021-11-04 14:52:41

    1.mysql数据库给主键增加一个自增的功能:

    mysql> alter table sec_user modify id integer auto_increment ;

    Query OK, 1 row affected (0.28 sec)

    Records: 1 Duplicates: 0 Warnings: 0

    2.java程序添加相关注解

    @Data
    @TableName("sec_user")
    public class UserDTO {
    
        private static final long serialVersionUID=1L;
    
        @TableId(value = "id", type = IdType.AUTO)
        private Long id;
    
        private String userName;
    
        private String sex;
    
        private String email;
    
        private String isDelete;
    
    }

    这样,上面的user表里面的主键,id可以自增了。

    3.如果想修改自增值的初始值,比如设为100,可执行以下操作:

    (1)首先将id>=100的数据删除。否则不生效
    (2)执行脚本
    alter table `表名` AUTO_INCREMENT= 100

    执行成功后。则初始值生效

    参考原文章:mysql中如何设置自增主键_MySQL中的主键以及设置其自增的用法教程_weixin_39761558的博客-CSDN博客

    更多相关内容
  • 联合主键自增问题今天上午闲来无事翻看了下数据库分类表的设计,看到这样一幕:当时我好奇的是怎么cateId自增会存在重复值的问题,然后翻看了下主键是由siteId和cateId组成。所以进行了查阅资料:当多列组成联合...

    前言

    一. 联合主键自增问题

    今天上午闲来无事翻看了下数据库分类表的设计,看到这样一幕:

    3330a07b5f0e4fdcc51b27008142647b.png

    4920e5588d0fb9941d6e7a854fbbb937.png

    当时我好奇的是怎么cateId自增会存在重复值的问题,然后翻看了下主键是由siteId和cateId组成。所以进行了查阅资料:

    当多列组成联合主键时、auto_increment属性的列并不是自顾自得一味的增长,而是配合其他主键的列 从而得到唯一约束;如上图2所示  当siteId值不同时cateId会重归1开始自增

    but这里有几个坑需要注意下,为了显眼我特地设置为红色:

    1:存储引擎必须为MyISAM

    2:自增主键必须为第二列

    下面再总结一个小知识点

    英文字母和中文汉字在不同的字符集编码下所占的字节数

    英文字母:

    字节数 : 1;编码:GB2312

    字节数 : 1;编码:GBK

    字节数 : 1;编码:GB18030

    字节数 : 1;编码:ISO-8859-1

    字节数 : 1;编码:UTF-8

    字节数 : 4;编码:UTF-16

    字节数 : 2;编码:UTF-16BE

    字节数 : 2;编码:UTF-16LE

    中文汉字:

    字节数 : 2;编码:GB2312

    字节数 : 2;编码:GBK

    字节数 : 2;编码:GB18030

    字节数 : 1;编码:ISO-8859-1

    字节数 : 3;编码:UTF-8

    字节数 : 4;编码:UTF-16

    字节数 : 2;编码:UTF-16BE

    字节数 : 2;编码:UTF-16LE

    1个字节byte=8bit(比特/位)  1bit=0.125B字节

    1个汉字两个字节 16bit,2B.

    字符:汉字,数字,字母等

    Byte,bit是存储单位

    Bit——比特

    B ——字节 byte

    KB——千字节

    MB——兆字节

    GB——吉字节

    TB——太字节

    1B=8 Bit

    1KB=1024B

    1MB=1024KB

    1GB=1024MB

    1TB=1024GB

    mysql数据库表的自增主键号不规律,重新排列

    mysql数据库表的自增主键ID乱了,需要重新排序. 原理:删除原有的自增ID,重新建立新的自增ID. 1.删除原有主键: ALTER TABLE `table_name` DROP `id`; 2. ...

    Mysql数据库表的自增主键ID号乱了,需要重新排列。

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键:ALTER TABLE `table_name` DROP `id`; 2, ...

    mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)

    通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...

    Mybatis+Mysql插入数据库返回自增主键id值的三种方法

    一.场景: 插入数据库的值需要立即得到返回的主键id进行下一步程序操作 二.解决方法: 第一种:使用通用mapper的插入方法 Mapper.insertSelective(record): 此方法: ...

    mybatis获取插入的语句主键(自增主键)

    Mysql对自增主键ID进行重新排序

    Mysql数据库表的自增主键ID号经过一段时间的添加与删除之后乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name ...

    Mysql自增主键ID重新排序方法详解

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...

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

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

    MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

    Oracle设置主键自增

    oracle没有mysql那样可以有自增主键,需要自己通过创建序列才能实现自增 /*创建自增序列*/ CREATE SEQUENCE CMB_CHINA_CITYS_ID MINVALUE --最小值 ...

    随机推荐

    UIImageView变灰

    1.UIImageView圆角 CALayer *l = [cell.imgAvatarImage layer]; [l setMasksToBounds:YES]; [l setCornerRadi ...

    制作nginx和php的rpm包

    rpm包的制作真几把烦,制作php的rpm花了我3天时间,因为是根据线上环境来做的,依赖的第三方库太多,本来想把所有的第三方库做进php包,后来发现在rpmbuild -bb的时候非常耗时,而且乱七八 ...

    爬虫-html

    Uri myUri =new Uri(@sURL); WebRequest wrq = WebRequest.Create(myUri); WebResponse wrs = wrq.GetRespo ...

    编写isNull isArray isFunction的方法

    1.isNull 判断null,需要排除掉undefined和0.''(空串). function isNull(arr){ return !arr&&typeof arr!=='un ...

    【C语言天天练(二四)】内存分配

    引言: 对于C语言程序,了解它执行时在内存中是怎样分配的对于我们理解它的执行机制是很实用的.以下就总结一下C语言程序的一些内存分配知识. 一 一段C程序.编译连接后形成的可运行文件一般有代码段.数据段 ...

    【RabbitMQ+Python入门经典】兔子和兔子窝 笔记

    RabbitMQ工业级的消息队列服务器. 兔子和兔子窝 动机来源:从生产环境的电子邮件处理流程当中分支出一个特定的离线分析流程. 解决方案1: 开始使用MySQL处理,将要处理的东西放在表里面,另一个 ...

    debian9 开启rc.local服务

    由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc. ...

    向指定URL发送GET、POST方法的请求

    /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name ...

    python之Bottle框架

    一.简单的Bottle框架 1)bottle框架简介 安装 pip install bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架. 此框架只由一个 .py 文件,除 ...

    java学习第04天(语句、函数、数组)

    (3)循环结构 格式: for(初始化表达式,循环条件表达式,循环后的操作变大时){ 执行语句,循环体: } 注: a. for循环里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真 ...

    展开全文
  • Mysql数据库添加主键后,删除数据,数据依然排序显示 提示:平常操作数据库时,我们对主键是不需要进行这个操作的...问题原因:Mysql数据库的主键是支持自增的 ,此时我们不断向数据库中插入数据,主键的值便会不断的自

    Mysql数据库添加主键后,删除数据,数据依然排序显示

    提示:平常操作数据库时,我们对主键是不需要进行这个操作的,但是测试数据时,有时就是需要这样的操作也是存在的:

    tips: 文章较长,关键操作:删除操作后,alter table 表名 AUTO_INCREMENT=N; (N代表主键从什么位置开始排序)

    ps:本文的编写是为了,记录自己在学习Mysql数据库时的一些事项


    # 一、Mysql数据库的主键

    问题原因:Mysql数据库的主键是支持自增的 ,此时我们不断向数据库中插入数据,主键的值便会不断的自增,此时我们删除某一个数据,并不会扰乱主键的递增

    二、Mysql主键案例演示

    1.给表格添加主键自增

    这里我们有一张studentinfo表,添加stuno为主键,代码如下:

    范式:alter table 表名 change 列名 列名 数据类型 primary key auto_increment;
    alter table studentinfo change stuno stuno int primary key auto_increment;
    

    在这里插入图片描述

    2.添加数据

    我们随便添加几个数据,
    因为我们设置了主键自增,那么我们默认插入的数据 stuno是会自己递增,我们不用管
    会发现后面添加的三个数据,stuno是自己按照5007-5009排序的
    代码如下:

    insert into studentinfo(stusex,stuname) values(0,"小二子");
    insert into studentinfo(stusex,stuname) values(1,"小李子");
    insert into studentinfo(stusex,stuname) values(1,"杨二");
    

    这里我们设置了主键自增,并且添加三条数据

    3.删除数据

    下面我们删除数据后查看效果
    代码如下:

     delete from studentinfo where stuno=5007;
     delete from studentinfo where stuno=5008;
     delete from studentinfo where stuno=5009;
    

    这里我们已经删除了原来添加的三个数据

    4.再次添加数据

    这里我们继续添加数据,便会发现数据,并不会按照5007继续排序
    Jack的stuno是5010,并不是从5007开始排序
    代码如下:

     insert into studentinfo(stusex,stuname) values(0,"Jack");
    

    会发现Jack的stuno是没有经过排序的

    5.通过下面的代码修改

    每次我们每次进行删除数据操作后,都需要在终端执行一次下方的代码语句
    代码如下:

    范式:alter table 表名 AUTO_INCREMENT=N;
    	 delete from studentinfo where stuno =5010;
     	 alter table studentinfo AUTO_INCREMENT=5006;
    
    

    在这里插入图片描述

    6.增加数据查看

    执行代码后,添加数据,查看结果
    此时的Jack的stuno便是我们想要的5007
    代码如下:

    insert into studentinfo(stusex,stuname) values(0,"Jack");
    

    在这里插入图片描述


    总结

    提示:
    ①:需要执行的语句为:范式:alter table 表名 AUTO_INCREMENT=N; ( ‘N’:代表着主键需要从那个数据开始排序)
    ②:代码中的大小写 (貌似并不区分,我测试了几个大小写情况,添加数据都正常)
    ③:每次进行删除操作后,如果想按顺序排序,那么都必须要执行一次语句
    ④:这段代码,执行在删除操作之后

    展开全文
  • id number(10) primary key, /*主键,自动增加*/ name varchar2(20), /*姓名*/ phone varchar2(20), /*电话*/ sex varchar2(10), /*性别*/ age number(10) /*年龄*/ ); --.创建自增长序列 create s

    1,orcale数据库主键自增

    -- 创建表

    create table PERSON(
           id number(10) primary key,   /*主键,自动增加*/
           name varchar2(20),       /*姓名*/
           phone varchar2(20),        /*电话*/
           sex varchar2(10),      /*性别*/
           age number(10)       /*年龄*/
    );


    --.创建自增长序列

    create sequence PERSON_SEQ
    --minvalue 1        -- 最小值
    -- maxvalue 2000    -- 最大值
    nomaxvalue          -- 不设置最大值 
    start with 1      -- 从1开始计数
    increment by 1      -- 每次增加1
    nocycle         -- 一直累加,不循环
    cache 20;


    --在创建自增长序列时,可以设置计数起始位置。例如表中存在100条原始数据,那么我们可以设置 start with 101 ,这样自增长就会从101开始
    --删除主键自增:DROP sequence PERSON_SEQ
    -- 创建触发器

    create or replace trigger PERSON
    before insert on PERSON
    for each row
    begin
    select PERSON_SEQ.nextval into :new.id from dual;
    end PERSON_TR;

    --提交:commit;

    insert into person(name,phone,sex,age)  values('张三','18888888888','男',25);
    insert into person(name,phone,sex,age)  values('李四','18888888889','男',29);

    数据表中添加主键自增,通过sqlplus导入数据时,不会出现如下错误

    2,mysql主键自增

    create table if not exists `user`(
       `id` int unsigned auto_increment, --unsigned:既为非负数,用此类型可以增加数据长度!     
                                         --auto_increment:主键自增设置
       `name` varchar(100) not null,
       `sex` varchar(40) not null,
       `age` int(11),
       primary key ( `id` )
    )engine=innodb default charset=utf8;

    亦可以在使用navicat给数据库表,设计表中,添加主键和自增,操作比orcale数据库操作方便。

    展开全文
  • 主要介绍了MySQL自增ID(主键) 用完了的解决方法,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下
  •  设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表后一行的ID是100,我先删除这条ID为100的记录,然后重新启动服务器,按理说如果再往这个表里插入新的记录,新纪录的ID将为101,对吧...
  • 1.CREATE TABLE product ( id INT , pname VARCHAR(50), price DOUBLE(9,2) ); 添加主键 错误的方法: -- 添加主键 ALTER TABLE product MODIFY id INT PRIMARY KEY;...删除主键 alter ...
  • MySQL 自增主键

    千次阅读 2022-02-10 17:46:23
    ​ 在创建主键的时候可以使用AUTO_INCREMENT关键字进行自增主键设置,设置之后,每插入一条数据之后主键都会自动累加1 ​ 使用AUTO_INCREMENT=100可以在表级别设定偏移量,比如这里设定为100,即从100开始累加 2、...
  • mysql中使用联合主键并设置非主键自增 数据库里有三个三字段,id , wire_id, station_id。 其中wire_id+station_id合一起不允许重复(单独的某一个允许重复) 并且id需要实现自增 ### 尝试一:(未成功) 将wire...
  • 原因:在进行数据的插入删除的时候,总会有以前创建的数据被删除的情况,但是删除后再添加,还是从当前id最大的值进行自增的,所以是这样下去可能时间长了就会超出范围 解决方案: 如果直接在数据库中进行操作,直接...
  • 问题: mysql数据库表的自增主键ID乱了,需要重新排序 原理 删除原有的自增ID,重新建立新的自增ID 删除原有主键: ALTER TABLE `table_name` DROP `id`; 添加新主键字段: ALTER TABLE `table_name` ADD `id`...
  • Mysql 自增主键

    2021-05-30 18:51:55
    整型结合属性 auto_increment,可以实现自增功能,但在表结构设计时用自增主键,希望你特别要注意以下两点,若不注意,可能会对业务造成灾难性的打击: 用 BIGINT 做主键,而不是 INT; 自增值并不持久化,可能会...
  • 因为:1)update 和 delete 语句除了事务本身,还涉及到标记删除旧数据,也就是要把数据放到 purge 队列里等待后续物理删除,这个操作也会把 max_trx_id+1, 因此在一个事务中至少加 2;2)InnoDB 的后台操作,比如...
  • MYSQL自增主键ID重置

    千次阅读 2021-08-10 17:02:53
    MYSQL在创建一个带有自增主键ID的表时,通常在删除数据时,导致自增主键不连续了。使用下面的SQL脚本可以重置主键。 SET @tableName = 'table_name'; SET @rownum = 0; UPDATE @tableName SET id = @rownum := @...
  • /*Mysql数据库练习需求:创建一张表,包含四个字段(pid,name,age,sex),然后使用存储过程实现添加数据,要求1 pid 为自增主键2 插入数据的时候值添加姓名和年龄3 性别采用随机数的方式生成测试数据如下:张珊 23李四 22...
  • 修改mysql字段为主键自增

    千次阅读 2022-02-22 17:25:21
    最近遇到一个场景,不重新建表,重新导入数据的情况下,对...--删除主键 Alter table 表名 add primary key(`字段`); --修改某列为主键 Alter table 表名 column id int auto_increment=1; --设置自增,默认值为1 ...
  • 解决方法:就是 删除数据之后,执行一下语句:每次删除记录后,执行:ALTER table tableName AUTO_INCREMENT=1;后面插入数据就是连续的了。MySQL复制表结构 表数据1、复制表结构及数据到新表CREATE TABLE 新表 SELECT...
  • mysql建表后设置表主键自增
  • 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主键自增撤回

    2022-05-21 18:42:19
    首先查看需要删除的表的最小的主键是多少并且记下来 清空表 DELETE from tableName(表名) 然后 ALTER TABLE tableName(表名) AUTO_INCREMENT = 数字(最小的主键是多少) 下次插入数据主键就会成刚才最小的了
  • MySql自增主键ID重置这个坑货

    千次阅读 2021-01-27 18:33:17
    这两天在面试的时候被问到一个问题:在mysql中用自增列作为主键时,先往表里插入5条数据,此时表里数据id为1、2、3、4、5,如果此时删除id=4、5的数据后,再重启数据库,重启成功后向表里insert数据的时候,INNODB、...
  • Mysql-更新自增主键id遇到的问题

    千次阅读 2021-11-28 11:53:33
    Mysql-更新自增主键id遇到的问题 本是一个自己知道的问题,还是差点踩坑(差点忘了,还好上线前整理上线点时想起来了),特此记录下来 为什么要更新自增id 我是因为历史业务上的坑,导致必须更新一批id,且为了避免...
  • Mysql 自增主键重复的问题

    千次阅读 2021-09-10 15:07:58
    问题描述 ...在排查问题的遇到了一个诡异的问题,mysql 自增主键删除后,又重复出现的问题 mysql> select * from test; +----+----------------+ | id | name | +----+----------------+ | 1 |
  • Mysql语句删除主键自增

    千次阅读 2019-04-12 22:03:00
    ALTER TABLE 表名MODIFY COLUMN 字段名 int(2) NOT NULL FIRST ; 转载于:https://www.cnblogs.com/zxrxzw/p/10698915.html
  • 在数据库表设计中会纠结于”自然键”和”代理键”的选择,自然键在实现数据“软删除”时实现比较复杂,部分自然键因为键值过长或多列组合导致不适合作为表主键,而比较常见两种代理键为自增列(auto incremnet)和全局...
  • 摘要 由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑。之前我见过有的业务设计依赖于自增主键的连续性,也就是说,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,...
  • MySQL设置主键从那个位置开始自增

    千次阅读 2021-12-30 10:25:11
    Mysql数据库添加主键后,删除数据,数据依然排序显示 提示:平常操作数据库时,我们对主键是不需要进行这个操作的,但是测试数据时,有时就是需要这样的操作也是存在的: tips: 文章较长,关键操作:删除操作后,...
  • 将表 tf_user 的主键自增起始值为 2 truncate table `tf_user`; alter table tf_user AUTO_INCREMENT=2; 表已有数据,delete from 之后再设置 auto_increment,可行 delete from `tf_user`; alter table tf_user ...
  • alter table [表名] auto_increment=[起始数据]; eg: alter table aaa auto_increment = 10;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,601
精华内容 21,840
关键字:

mysql删除主键自增

mysql 订阅