精华内容
下载资源
问答
  • mysql删除自动增长
    千次阅读
    2018-11-15 18:05:31

    truncate  table  table_name;

    清空指定的表,即便是自动增长的也会从零开始计数。

    更多相关内容
  • mysql删除增长主键

    千次阅读 2020-07-23 15:55:02
    mysql删除自增长主键 /** * 删除主键自动增长 * * @param jdbcTemplate jdbcTemplate * @param backupMode 备份方式 * @param tableName 表面 */ private void deleteAutoIncrement(JdbcTemplate ...

    mysql删除自增长主键

    
        /**
         * 删除主键自动增长
         *
         * @param jdbcTemplate jdbcTemplate
         * @param backupMode   备份方式
         * @param tableName    表面
         */
        private void deleteAutoIncrement(JdbcTemplate jdbcTemplate, String backupMode, String tableName) {
            //删除自动增长
            String descSql = String.format("DESC %s", tableName + "_" + backupMode);
            List<Map<String, Object>> maps1 = jdbcTemplate.queryForList(descSql);
            for (Map<String, Object> stringObjectMap : maps1) {
                Object key = stringObjectMap.get("Key");
                if ("PRI".equals(key)) {
                    Object extra = stringObjectMap.get("Extra");
                    if (!StringUtils.isEmpty(extra)) {
                        Object type = stringObjectMap.get("Type");
                        Object field = stringObjectMap.get("Field");
                        String dropAutoIncrement = String.format("ALTER TABLE %s CHANGE %s  %s %s UNSIGNED NOT NULL", tableName + "_" + backupMode,
                                field, field, type);
                        jdbcTemplate.execute(dropAutoIncrement);
                        break;
                    }
                }
            }
        }
    
    展开全文
  • 1,3,4,5,7,10这样子-------------------------truncate命令...-----------MySql数据库唯一编号字段(自动编号字段)在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属...

    1,3,4,5,7,10这样子

    -------------------------

    truncate命令是会把自增的字段还原为从1开始的,或者你试试把table_a清空,然后取消自增,保存,再加回自增,这也是自增段还原为1的方法。

    -----------

    MySql数据库唯一编号字段(自动编号字段)

    在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性

    来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据

    列自增属性。

    ISAM表

    如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开

    始,并1为基数递增。

    把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。

    当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。

    当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,情况一,如果

    插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况

    二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递

    增。也就是说,可以跳过一些编号。

    如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。

    如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号

    从该值开始递增。

    如果用replace命令基于AUTO_INCREMENT数据列里的值来修改数据表里的现有记录,即AUTO_INCREMENT数

    据列出现在了replace命令的where子句里,相应的AUTO_INCREMENT值将不会发生变化。但如果replace命

    令是通过其它的PRIMARY KEY OR UNIQUE索引来修改现有记录的(即AUTO_INCREMENT数据列没有出现在

    replace命令的where子句中),相应的AUTO_INCREMENT值--如果设置其为NULL(如没有对它赋值)的话--就

    会发生变化。

    last_insert_id()函数可获得自增列自动生成的最后一个编号。但该函数只与服务器的本次会话过程中

    生成的值有关。如果在与服务器的本次会话中尚未生成AUTO_INCREMENT值,则该函数返回0。

    其它数据表的自动编号机制都以ISAM表中的机制为基础。

    MyISAM数据表

    删除最大编号的记录后,该编号不可重用。

    可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。

    可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。

    可使用复合索引在同一个数据表里创建多个相互独立的自增序列,具体做法是这样的:为数据表创建一

    个由多个数据列组成的PRIMARY KEY OR UNIQUE索引,并把AUTO_INCREMENT数据列包括在这个索引里作为

    它的最后一个数据列。这样,这个复合索引里,前面的那些数据列每构成一种独一无二的组合,最末尾

    的AUTO_INCREMENT数据列就会生成一个与该组合相对应的序列编号。

    HEAP数据表

    HEAP数据表从MySQL4.1开始才允许使用自增列。

    自增值可通过CREATE TABLE语句的 AUTO_INCREMENT=n选项来设置。

    可通过ALTER TABLE语句的AUTO_INCREMENT=n选项来修改自增始初值。

    编号不可重用。

    HEAP数据表不支持在一个数据表中使用复合索引来生成多个互不干扰的序列编号。

    BDB数据表

    不可通过CREATE TABLE OR ALTER TABLE的AUTO_INCREMENT=n选项来改变自增初始值。

    可重用编号。

    支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号。

    InnDB数据表

    不可通过CREATE TABLE OR ALTER TABLE的AUTO_INCREMENT=n选项来改变自增初始值。

    不可重用编号。

    不支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号。

    在使用AUTO_INCREMENT时,应注意以下几点:

    AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

    设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序

    列的编号个可增加一倍。

    AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

    AUTO_INCREMENT数据列必须具备NOT NULL属性。

    AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上

    UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

    当进行全表删除时,AUTO_INCREMENT会从1重新开始编号。全表删除的意思是发出以下两条语句时:

    delete from table_name;

    or

    truncate table table_name

    这是因为进行全表操作时,MySQL实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然

    后重建数据表。如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以

    抑制MySQL的优化:

    delete from table_name where 1;

    这将迫使MySQL为每个删除的数据行都做一次条件表达式的求值操作。

    强制MySQL不复用已经使用过的序列值的方法是:另外创建一个专门用来生成AUTO_INCREMENT序列的数据

    表,并做到永远不去删除该表的记录。当需要在主数据表里插入一条记录时,先在那个专门生成序号的

    表中插入一个NULL值以产生一个编号,然后,在往主数据表里插入数据时,利用LAST_INSERT_ID()函数

    取得这个编号,并把它赋值给主表的存放序列的数据列。如:

    insert into id set id = NULL;

    insert into main set main_id = LAST_INSERT_ID();

    可用alter命令给一个数据表增加一个具有AUTO_INCREMENT属性的数据列。MySQL会自动生成所有的编号

    要重新排列现有的序列编号,最简单的方法是先删除该列,再重建该,MySQL会重新生连续的编号序列。

    在不用AUTO_INCREMENT的情况下生成序列,可利用带参数的LAST_INSERT_ID()函数。如果用一个带参数

    的LAST_INSERT_ID(expr)去插入或修改一个数据列,紧接着又调用不带参数的LAST_INSERT_ID()函数,

    则第二次函数调用返回的就是expr的值。下面演示该方法的具体操作:

    先创建一个只有一个数据行的数据表:

    create table seq_table (id int unsigned not null);

    insert into seq_table values (0);

    接着用以下操作检索出序列号:

    update seq_table set seq = LAST_INSERT_ID( seq + 1 );

    select LAST_INSERT_ID();

    通过修改seq+1中的常数值,可生成不同步长的序列,如seq+10可生成步长为10的序列。

    该方法可用于计数器,在数据表中插入多行以记录不同的计数值。再配合LAST_INSERT_ID()函数的返回

    值生成不同内容的计数值。这种方法的优点是不用事务或LOCK,UNLOCK表就可生成唯一的序列编号。不

    会影响其它客户程序的正常表操作。

    alter table table_name auto_increment=n;

    注意n只能大于已有的auto_increment的整数值,小于的值无效.

    show table status like 'table_name' 可以看到auto_increment这一列是表现有的值.

    步进值没法改变.只能通过下面提到last_inset_id()函数变通使用

    在使用AUTO_INCREMENT时,应注意以下几点:

    AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

    设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序

    列的编号个可增加一倍。

    AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

    AUTO_INCREMENT数据列必须具备NOT NULL属性。

    AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上

    UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

    在不用AUTO_INCREMENT的情况下生成序列,可利用带参数的LAST_INSERT_ID()函数。如果用一个带参数

    的LAST_INSERT_ID(expr)去插入或修改一个数据列,紧接着又调用不带参数的LAST_INSERT_ID()函数,

    则第二次函数调用返回的就是expr的值。下面演示该方法的具体操作:

    先创建一个只有一个数据行的数据表:

    create table seq_table (id int unsigned not null);

    insert into seq_table values (0);

    接着用以下操作检索出序列号:

    update seq_table set seq = LAST_INSERT_ID( seq + 1 );

    select LAST_INSERT_ID();

    通过修改seq+1中的常数值,可生成不同步长的序列,如seq+10可生成步长为10的序列。

    该方法可用于计数器,在数据表中插入多行以记录不同的计数值。再配合LAST_INSERT_ID()函数的返回

    值生成不同内容的计数值。这种方法的优点是不用事务或LOCK,UNLOCK表就可生成唯一的序列编号。不

    会影响其它客户程序的正常表操作。

    有两点需要加强注意:

    1、只有一列的时候是不行的!

    2、自动编号必须作为主键才有效!

    ============================

    展开全文
  • Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  ...
  • 今天发现一个有意思的事情,就是删除数据库自增列时如: 现在在数据库创建一个 ID 我设置它为自增列,保存{1,2,3,4,5}五数现在删除2和3数据库里面只有三条数据,都是新增一条数据还是要从6开始,不可能从4因为不...

    今天发现一个有意思的事情,就是删除数据库自增列时如:

    现在在数据库创建一个 ID 我设置它为自增列,保存{1,2,3,4,5}五数现在删除2和3数据库里面只有三条数据,都是新增一条数据还是要从6开始,不可能从4因为不可能出现主键一样的情况。

    但是今天我发现如果你删除的是最后一条数据,现在删除5,之后我可以设置自增下一个从5开始。


    1 创建一个数据库 设置自增id,如图我删除了3现在我添加数据还是从6开始。


    2 删除5设置下一个从5开始索引语句如下

    DELETE  FROM `test` WHERE id = '5'; 
    alter table test AUTO_INCREMENT=5; 

    3 添加一条数据 6测试索引是否设置成功

    INSERT INTO test(shuzi) VALUES (6) 

    如图添加上的数字6 索引从你是设置的5开始

                


    总结:删除最后一条数据可以设置索引位置但是如果是中间数据,没有办法设置

    展开全文
  • 下面小编就为大家带来一篇设置MySQL自动增长从某个指定的数开始方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • mysql设置主键自动增长

    千次阅读 2021-09-23 20:56:00
    设置主键id自增的数据库表删除数据后,自增id不会自动重新计算 想要重新设置自增的id可以用如下命令: alter table table_name AUTO_INCREMENT=100; table_name是表名,100表示自增开始的位置。 ...
  • MySQL中的自动增长

    万次阅读 2020-07-09 08:45:33
    hello,大家好,我是你们的怪味老王,今天我们简单的说说自动增长 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败。 如何解决:为主键生成自动增长的值。 ...
  • 标识列也称为自增长列 又称自增长列,重要关键字:AUTO_INCREMENT 含义:可以不用手动的插入值,系统提供默认的序列值 特点: 自增长列必须和主键搭配嘛?不一定,但要求是一个key(主键、唯一、外键) 一个表可以...
  • 今天在服务器上MYSQL库里的一个表插入数据,主键id是auto_increment自动增长类型的。发现插入的值从2247734开始,而实际上id的最大值才22722,不明原因。删除了新增的,optimize表一下,重新插入,还是不行,从...
  • mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,NAME VARCHAR(15),age INT,email VARCHAR(50),gender ...
  • 说明:当开启MySQL数据库主从时,会...mysql-bin.000001mysql-bin.000002mysql-bin.000003mysql-bin.000004mysql-bin.000005…有三种解决方法:1.关闭mysql主从,关闭binlog;2.开启mysql主从,设置expire_logs_day...
  • MySQL序列(自动增长

    千次阅读 2021-01-20 01:44:27
    在本教程中,我们将向您展示如何使用MySQL序列为表的ID列自动生成唯一编号。创建MySQL序列在MySQL中,序列是以升序生成的整数列表,即1,2,3 ...许多应用程序需要序列来生成主要用于识别的唯一数字,例如:CRM中的...
  • 如何重置MySQL自动增量列

    千次阅读 2021-01-19 13:35:26
    如何重置MySQL自动增量列MySQL数据库提供了一个奇妙的功能AUTOINCREMENT列指数。你的数据库表可以定义为数字自动递增的主键,MySQL将采取照顾其独特的价值,同时插入新行。...现在要删除这些行,并自动增量列复...
  • mysql如何设置自动增长id列

    万次阅读 2019-01-12 14:29:02
    我使用的是navicat软件来可视化mysql。 查看当前数据库的自增长设置 SHOW VARIABLES LIKE 'auto_inc%'; 这条SQL语句作用是查看当前数据库的自增长设置。 auto_increment_increment是自增长的步长。 auto_...
  • 第一步:清空表数据 第二步:执行ALTER TABLE sys_user AUTO_INCREMENT = n;//n为起始计数的值,若从1计数,则n=1,若从100001开始计数,则n=10001
  • 主要介绍了Mysql InnoDB删除数据后释放磁盘空间的方法,Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长,本文就讲解释放磁盘空间的方法,需要的朋友...
  • mysql自动增长更新

    千次阅读 2016-11-16 11:43:40
    有些用的mysql自动增长删除一条数据后再将id重新设置,有的上set id = (id -1) 但当id在中间要删除的时候这样要出错 ,我就果断换了另一个方法 #1,删除原有主键: ALTER TABLE `am_apk` DROP `id`; #2,添加新...
  • mysql中主键设置自动增长删除几条记录后,新增的主键不是现在主键的下一个,而是所有记录中的下一个,求怎样获取下一个主键值
  • MySQL重置自动增量值

    2021-01-27 23:20:23
    在本教程中,我们将向您展示如何重置MySQL中AUTO_INCREMENT列的自动增量值。MySQL提供了一个有用的功能,称为自动增量。 您可以将自动递增属性分配给表的列,以生成新行的唯一标识。 通常,使用表的主键列的自动递增...
  • 本篇文章是对Mysql,SqlServer,Oracle主键自动增长的设置进行了详细的分析介绍,需要的朋友参考下
  • Navicat premium MySQL中将自动增长的字段重置(重新从1开始)**说明:此语句会将你的表中数据全部删除!!!** 在要操作的表中新建查询 代码如下: TRUNCATE TABLE 表名; 说明:此语句会将你的表中数据全部删除!...
  • 1、把主键定义为自动增长标识符类型MySqlmysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:create table customers(id int auto_increment primary key not null, name varchar...
  • MySql数据库自动递增值问题

    千次阅读 2021-01-21 10:48:04
    ?Create TABLE test(idINT UNSIGNEDNOT NULL PrimaRY KEY AUTO_INCREMENT,usernameVARCHAR(15)NOT NULL)AUTO_...在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。MySQL支持多种数据表,每种数据表的自增...
  • 有时需要对mysql中设为auto_increment发的字段进行重置(恢复/还原),因此总结了一下,大概有三种方式可以做到: 1、直接重置autoIncrement的值 ALTER TABLE table_name AUTO_INCREMENT = 1; 2、通过truncate ...
  • MySQL中添加、删除约束

    千次阅读 2021-02-10 22:20:09
    38 --一张表只能有一个自增长列,并且该列必须定义了约束(可以是主键约束,也可以是唯一约束,也可以是外键约束,但是不可以是非空和检查约束) 39 40 41 --删除约束 42 43 --语法:ALTER TABLE tab_name DROP PRIMARY ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,936
精华内容 23,974
关键字:

mysql删除自动增长

mysql 订阅