MySQL auto_increment介绍 以及 查询和修改auto_increment的方法
一、auto_increment使用方法
1.创建table时设置auto_increment属性和初始值100
create table nonove
(
id bigint unsigned not null primary key auto_increment,
value text NOT NULL
)
auto_increment = 100;
2.修改table的auto_increment初始值
alter table table_name auto_increment=n
二、特性
Mysql存储引擎主要有MyISAM、InnoDB、BDB、ISAM、MERGE、HEAP、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。其中常用的是MyISAM和InnoDB。
下面说说常用的几种存储引擎auto_increment的特性:见下表(仅供参考) 编号 是否可以重用 是否可以设置和修改初始值 是否支持复合索引
MyISAM 不可重用 可以 是
InnoDB 不可重用 不可以 否
HEAP(Memory)
不可重用
可以
否
BerkeleyDB(BDB)
可重用
不可以
是
1.MyISAM 删除最大编号的记录后,该编号不可重用,可设定和修改初始值。 可使用复合索引在同一个数据表里创建多个相互独立的自增序列。了解:复合索引。
2.InnDB 不可重用编号,不可设置和修改初始值。 不支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号。
3.HEAP (Memory)
HEAP数据表从MySQL4.1开始才允许使用自增列,编号不可重用,可设置和修改初始值。
HEAP数据表不支持在一个数据表中使用复合索引来生成多个互不干扰的序列编号。
4.BDB
可重用编号,不可改变自增初始值。
支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号。
三、一些使用技巧
1.设置AUTO_INCREMENT属性的数据列是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍,同时一般配合使用bigint,数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。
2.全表删除时,编号重新从1开始。全表删除相当于把表删掉,重新创建了一个,所以编号自然地重新计数。全表删除语句:
delete from table_name;
ortruncate table table_name;
如果想删除所有的数据行又想保留序列编号信息,可以 delete from table_name where 1;
3.在不用AUTO_INCREMENT的情况下生成序列,可利用带参数的LAST_INSERT_ID()函数。如果用一个带参数的 LAST_INSERT_ID(sn)去插入或修改一个数据列,紧接着又调用不带参数的LAST_INSERT_ID()函数,则第二次函数调用返回的就是sn的值。
例子:先创建一个只有一个数据行的数据表: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表就可生成唯一的序列编号。不会影响其它客户程序的正常表操作。
参考:
http://blog.csdn.net/zhuyingxi/archive/2009/04/13/4070679.aspx
http://dev.mysql.com/doc/refman/5.1/zh/pluggable-storage.html
http://dev.mysql.com/doc/refman/5.1/zh/tutorial.html#example-auto-increment
查询表名为tableName的auto_increment值:
修改表名为tableName的auto_increment值:
MySQL auto_increment介绍 以及 查询和修改auto_increment的方法的更多相关文章
- MySQL查询和修改auto_increment的方法
查询表名为tableName的auto_increment值: 复制代码 代码如下: SELECT AUTO_INCREMENT FROM information_schema.tables WHER ...
- mysql表结构的查询与修改
MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row **** ...
- mysql group by分组查询错误修改
select @@global.sql_mode;set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR ...
- Java如何连接SQLServer,并实现查询、修改、删除方法
场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”. 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质. B: 在做新增操作 ...
- linux下mysql 查看默认端口号与修改端口号方法
一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -pEnter password: 输入数据库密码: 2.使用show global vari ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- Mysql获取最大自增ID(auto_increment)的五种方式及其特点
在关系型数据库的表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都有一个唯一标识. 而实际应用中,获取到最近最大的ID值是必修课之 ...
- mysql性能优化-慢查询分析、优化索引和配置 MySQL索引介绍
MySQL索引介绍 聚集索引(Clustered Index)----叶子节点存放整行记录辅助索引(Secondary Index)----叶子节点存放row identifier-------Inn ...
- Java对MySQL数据库进行连接、查询和修改【转载】
一般过程: (1) 调用Class.forName()方法加载驱动程序. (2) 调用DriverManager对象的getConnection()方法,获得一个Connection对象. (3) 创 ...
随机推荐
- BZOJ 3689: 异或之
字典树可以$o(logn)查找第k大$ 使用$可持久化Trie 区间查找第k大,然后首先把每个数异或之后的最小丢进小根堆中,然后一个一个取出,取出后就再丢次小,一共取k次$ 总的时间复杂度为$O(kl ...
- 剑指offer编程题66道题 36-66
36.两个链表的第一个公共节点 题目描述 输入两个链表,找出它们的第一个公共结点. 1.具有重合节点的两个链表是一个Y字性,用两个堆栈放这两个链表,从尾部开始遍历,直到遍历到最后一个重合节点. 这种算 ...
- qss 样式不生效--注释不能嵌套
qss 兼容 css 调qt样式的时候出现一个很奇怪的问题 删掉注释掉的内容 样式正常,不删注释 ,注释后面的样式全部失效.有点困惑的是: 感觉很困惑,后来发现里面有行中文注释,删掉中文注释就行了,以 ...
- nginx 第一天
来公司第一天先装了一下nginx 第一步: 先装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/ ...
- Kotlin 卸载APP自身
package com.example.batdw01.myapplication import android.net.wifi.WifiManager import android.support ...
- codeforces 808D
题意:给出一个序列,询问是否能移动一个数(或不操作)使得序列能分为左右两个和相等的子序列. 思路:对每个数处理最左边和最右边出现的位置.设置断点分左右区间,左右区间和差值的一半就是要找的数,进行判断. ...
- CentOS 7安装Xfce和VNC
很多VPS商提供的CentOS 7镜像只有最小化安装,这样就只能在命令行下操作,如果要调试代码的话,还是图形化界面方便,而且CentOS自带的Gnome和KDE都比较占内存.启动桌面后就占用了400M ...
- Oauth2.0认证原理
Oauth2.0 认证协议 Oauth2.0 应用场景: 微信联合登录 授权管理 互联网开放平台互相调用保证安全 微信提供api 给toov5调用 然后就可以获取一些微信的信息 比如微信 ...
- Java集合Collection&Map
Map<K,V>是键值对,K - 此映射所维护的键的类型,V - 映射值的类型.键值是一一对应的关系: Collection是只有键,底层也是由键值对,但是值的类型被隐藏起来. Colle ...
- const作用
const有以下几个作用: 1. 定义const常量,具有不可变性.eg. const int MAX = 100; int Array[MAX]; 2. 进行类型检查,使编译器对处理内容有更多的了 ...