mysql中auto_increment是干什么的

auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1。例如:create table `test`(`id` int(10) not null auto_increment, -- 表示自增列 `name` varchar(20) not null,primary key(`id`))auto_increment = 1; -- 表示自增...
mysql中auto_increment是干什么的
auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1。
例如:
create table `test`
(
`id` int(10) not null auto_increment, -- 表示自增列
`name` varchar(20) not null,
primary key(`id`)
)
auto_increment = 1; -- 表示自增起始大小-- 这样就可以创建一个表`test`,id为自增列
-- 执行语句 insert into test (`name`) values ('名字');
-- 就可以插入一行数据为: 1 '名字'

扩展资料:在使用AUTO_INCREMENT时,应注意以下几点:
1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。
2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。
3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。AUTO_INCREMENT数据列必须具备NOT NULL属性。
4、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。
5、当进行全表删除时,MySQL AUTO_INCREMENT会从1重新开始编号。
这是因为进行全表操作时,MySQL(和PHP搭配之最佳组合)实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然后重建数据表。
如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制MySQL(和PHP搭配之最佳组合)的优化:delete from table_name where 1;
可用last_insert_id()获取刚刚自增过的值。
2018-12-11
mengvlog 阅读 30 次 更新于 2025-09-09 09:17:28 我来答关注问题0
  •  文暄生活科普 面试官:MYSQL自增id超过int最大值怎么办?

    在MySQL中,如果自增ID(AUTO_INCREMENT)设置为int类型,其最大值为2147483647(对于有符号int)或4294967295(对于无符号int)。当表中的记录数增加到接近或超过这个值时,再尝试插入新记录将会失败,因为无法为新的记录分配一个唯一的自增ID。二、解决方案 修改数据类型为BIGINT 操作:将自增ID的数据...

  •  亚浩科技 雪花算法之【线上订单号重复了?一招搞定它!】

    还有诸如,mysql的 auto_increment策略,redis的INCR,zookeeper的单一节点修改版本号递增,以及zookeeper的持久顺序节点。

  •  文暄生活科普 分布式 ID 生成方案总结整理

    在分布式环境中,可以使用MySQL自增实现分布式ID的生成。如果分库分表了,不是简单地设置auto_increment_increment和auto_increment_offset就可以。在分布式系统中,我们可以部署多台机器,每台机器设置不同的初始值,步长和机器数相等。3.3 号段模式 这种模式也是生成分布式ID的一种方法。实现思路是从数据...

  •  小_盆_友 MySQL中的LONGTEXT类型怎么使用

    不加括号就可以,下面的内容复制自MYSQL手册,多看手册有好处:一个BLOB或TEXT对象的最大尺寸由其类型决定,但是你能在客户与服务器之间是实际传输的最大值由可用的内存数量和通讯缓冲区的大小来决定。你能改变消息缓冲区大小,但是你必须在服务器和客户两端做。见10.2.3 调节服务器参数。例如许多文件系...

  •  小棋子动漫社 redis和memcached的区别

    只有打开了Redis的虚拟内存功能,vm字段字段才会真正的分配内存,该功能默认是关闭状态的。 1)String 常用命令:set/get/decr/incr/mget等; 应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类; 实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等操作...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部