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) 创 ...
随机推荐
- LeetCode:组合总数II【40】
LeetCode:组合总数II[40] 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candi ...
- sql developer 如何格式化sql
1.首先 Ctrl+A 全选需要格式的sql 2.然后 Ctrl+F7 即可格式化
- vs2012编译cocos2dx 3.10报错解决方法
新建的一个cocos工程没有改过任何代码直接编译居然报错了? 百度了一下原来是因为vs2012不支持c++11的部分特性 cocos2dx 3.10正好就用到了vs2012不支持的那部分特性,所以报错 ...
- 2018年Java面试题搜集
2018年Java面试题搜集 一.Servlet执行流程(浏览器访问servlet的过程容器) 客户端发起http请求,web服务器将请求发送到servlet容器,servlet容器解析url并根据w ...
- discuz对PHP7不支持mysql的兼容性处理
PHP7 废除了 ”mysql.dll” ,推荐使用 mysqli 或者 pdo_mysql,discuz对原生mysql函数做了如下处理,通过mysqli代替原mysql函数 http://blog ...
- 程序包com.sun.istack.internal不存在
添加一下依赖 <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency> ...
- git多站点帐号配置
事件场景 小明同学是一个非常努力的coder,业余时间都花在了github.com上面,因为公司的台式机性能比较好,小明同学想在公司电脑上面也进行开发.但是github上面的帐号邮箱跟公司分配的帐号邮 ...
- [BZOJ1018]堵塞的交通traffic
Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一 ...
- 谈谈RMQ问题
没用的话:好像好久没更博了,无聊就讲讲算法吧(主要找不到水题). 感觉针对初学者,老师教这个算法时没怎么懂,最近(大概1.2个月前吧)老师又教了lca(最近公共祖先,额,可以百度,我就不讲了,可能以后 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...