MySQL Auto_Increment属性应用

我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性。

1 用法:

CREATE TABLE test
(
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(15) NOT NULL
)AUTO_INCREMENT = 100;

可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。
可用alter table table_name
AUTO_INCREMENT=n
命令来重设自增的起始值。

说明:
(1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。
(2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。
(3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。
(4)当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。
(5)如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。

Oracle数据库不支持直接设置主键自增,可以通过设置触发器实现

例如,将t_user的字段ID设置为自增:(用序列sequence的方法来实现)


----创建表
Create table t_user(
Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6)
);

----创建序列
create sequence user_seq
increment by 1
start with 1
nomaxvalue
nominvalue
nocache

----创建触发器
create or replace trigger tr_user
before insert on t_user
for each row
begin
select user_seq.nextval into :new.id from dual;
end;

----测试
insert into t_user(userid,loginpassword, isdisable)
values(‘ffll‘,‘liudddyujj‘, 0);
insert into t_user(userid,loginpassword, isdisable)
values(‘dddd‘,‘zhang‘, 0)
select * from t_user;

参考:http://blog.csdn.net/tancaiyi/article/details/4040289

MySQL Auto_Increment属性应用

时间: 2024-12-20 13:59:44

MySQL Auto_Increment属性应用的相关文章

MySQL AUTO_INCREMENT 简介

可使用复合索引在同一个数据表里创建多个相互独立的自增序列,具体做法是这样的:为数据表创建一个由多个数据列组成的PRIMARY KEY OR UNIQUE索引,并把AUTO_INCREMENT数据列包括在这个索引里作为它的最后一个数据列.这样,这个复合索引里,前面的那些数据列每构成一种独一无二的组合,最末尾的AUTO_INCREMENT数据列就会生成一个与该组合相对应的序列编号. 我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL

Mysql auto_increment 重新计数(让id从1开始)

当清空一个表的时候,重新插入数据,发现auto_increment属性的字段计数不是从1开始的时候,可以使用以下命令 方法一 delete from test; alter table `test` auto_increment=1 (好处,可以设置AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上. 方法二 truncate table test (好处,简单,AUTO_INCREMENT 值重新开始计数) 一般情况下我们使用第二

MySQL auto increment - the MySQL auto_increment attribute

MySQL FAQ: How do I define a MySQL auto increment field? Here's an example of the way I normally create a MySQL auto increment (auto_increment) field: create table pizzas ( id int auto_increment not null, name varchar(32) not null, primary key (id) )

谨慎使用MySQL auto_increment

在使用MySQL中,经常会在表中建立一个自增的ID字段,利用自增ID能够快速建立索引,也是MySQL官方比较推荐的一种方式,但是,这种方式在大量数据且配置主从时,可能会出现由于自增ID导致同步失败的情况 首先需要了解一点 Mysql主从同步主要通过bin log来同步,而MySQl中bin log最大值为1G, 这种情况触发条件如下: 1.数据库配置主从同步 2.表存在自增ID 3.表数据量大, 如果在主上执行insert into-select-类SQL,该SQL事物超过1G时,MySQL会将

mysql表属性、索引、约束

1.表属性 创建表的基本语法: create table [if not exists] 表名 (字段列表 [,索引或约束列表])[表选项列表] 其中,字段列表格式如下: 字段名 类型 [属性列表], 字段名 类型 [属性列表]... 属性列表中各个属性之间用空格隔开. 常用的字段属性: auto_increment 设置字段值自动增长,用于整数类型 primary key 设置字段为主键,此时该字段的值可以“唯一确定”一行数据 unique key 设置字段为唯一的,在整个数据表中不会重复 n

MySQL:列属性(列约束)

1. 是否允许为空(Null/not Null) 规定一个字段的值是否可以是null.默认是可以为空. 此时,插入值a = 10 , b 为空,发现可以正确插入: 若试图插入值b = 11,而a 不做处理,发现不能正确插入,提示 a 没有默认值. 即当对某个字段未输入信息时,列属性趋向于先查找有无默认值. tip: NULL与空字符串不同,Null会占用空间,需要表示某些字段可以为NULL. 2. 设置默认值(default value) 当插入数据中,有空字段时,会尝试查找该字段有没有设置默认

MySQL列属性约束及存储引擎

列属性约束,保证表的结构和数据的正确性和稳定性. 总的来说有五种:唯一性和主键约束.外键约束.检查约束.空值约束.默认值约束. 五大关键词:UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT 是否为空 规定一个字段的值,是否可以是null. null(默认) 或 not null Null表示没有值.与任何数据不同.表示什么都没有. 如果一个列不允许为空,但是在赋值时,没有为该字段赋值,则会出现问题. Mysql的每条记录,如果存在

MySQL数据类型/属性/增删改查(14)

MySQL数据类型 日期类型 ·date date数据类型负责存储日期信息(1000-01-01到9999-12-31)可以使用数字和字符串插入(20180809或"2018-08-09")非数字或字母使用分隔符 ·datetime datetime数据类型负责存储日期和时间信息的组合(1000-01-01 00:00:00到9999-12-31 23:59:59)可以使用数字和字符串插入(20180809122556或"2018-08-09 12:25:56")

学习笔记:MySQL列属性

列属性 a)         null|not null 缺省值是null,也就是允许为空,如果是not null而又没有给该字段赋值的话,系统会首先查询该字段有没有默认值 b)         default: 给一个字段一个默认值,如果没有给该字段填充数据,就用该默认值来代替,通常就是配合not null一起使用 c)         primary key: 主键,唯一可区别其他记录的字段,一个表中只能有一个主键,也可以很多个字段组合成一个组合主键,而且不允许为空! d)