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) 创 ...
随机推荐
- Android位置权限以及数组寻找索引的坑
填坑与求解惑来的. 一.Android 危险权限,来自官方文档的坑??? Android开发者都知道,Android 6.0 之前,权限申请只需要在 AndroidManifest.xml 文件中声明 ...
- CSS 控制元素 上下左右居中
不说废话,直接 搞起..... 首先,我们将题目 <css控制元素上下左右居中> 分析一下哈,我是将其分成了4部分信息: 1.CSS控制: 只用 CSS 来达成目的 2.元素: 不只是d ...
- 【JavaScript】下大雪
引用[JavaScript]满天星的代码,稍作修改的结果: function drawStars() { for (i = 1; i < 100; ++i) { ctx.fillText(&qu ...
- zero-base coordinate 和one-base coordinate
zero-base和one-base是生信会经常碰到的两套坐标系统. zero-base是半开放式的,是不包括该点的,zero-base的文件有:bed;bam one-base是封闭式的,是包括该点 ...
- VRChat简易教程3-往世界里导入模型和VRC接口初探
一.准备工作 按前面的教程新建一个project,导入sdk并创建地面(Terrain)和VRCWorld. 本教程中我们学习如何导入别人做好的模型并使用VRC提供的接口来实现物品的抓取,模型素材(小 ...
- 安装配置zabbix代理之zabbix_proxy
配置Proxy代理 如图所示: zabbix_server端在阿里云上,其代理程序部署在各地机房,代理程序收集所在机房的所有机器监控指标,然后传给server端 环境说明: CentOS releas ...
- Linux内核模块编写详解
内核编程常常看起来像是黑魔法,而在亚瑟 C 克拉克的眼中,它八成就是了.Linux内核和它的用户空间是大不相同的:抛开漫不经心,你必须小心翼翼,因为你编程中的一个bug就会影响到整个系统,本文给大家介 ...
- python部署LNMP业务服务环境
- dataframe 列名重新排序
在用list包含多个dict的模式生成dataframe时,由于dict的无序性,而uci很多数据的特征名直接是1,2,3...,生成的dataframe和原生的不一样, 为了方便观看和使用,我们将其 ...
- NFS的安装配置使用
/////////////////////////////NFS///////////////////////////////////////////////////写在前面:NFS在数据传输/信息传 ...