MySQL基础之 AUTO_INCREMENT

AUTO_INCREMENTmysql

AUTO_INCREMENT是mysql惟一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成惟一的ID,再具体设置AUTO_INCREMENT约束时,一个表中只能有一个字段使用该约束,而且该字段的数据类型必须为整数类型。还有,咱们习惯上将表中的一个列同时设置为AUTO_INCREMENT和主键。sql

语法(这里是和联合索引一块儿举例讲解):
使用单个索引=
mysql> create table auto(
-> id smallint not null auto_increment,
-> name char(15),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.04 sec)数据库

使用组合索=
mysql> create table autoincre_demo(
-> d1 smallint not null auto_increment,
-> d2 smallint not null,
-> name varchar(10),
-> index(d1,d2)
-> );
Query OK, 0 rows affected (0.06 sec)ide

总结:对于InnoDB表,自动增加列必须是索引,通常习惯上设置主键为自动增加列。若是是组合索引,自动增加列必须是组合索引的第一列。索引

总结auto_increment的几种注意事项:rem

(1)若是把一个NULL插入到一个AUTO_INCREMENT数据列里去,MYSQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。it

(2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值同样。但不建议这样作,仍是以插入NULL值为好。table

(3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。class

(4)当插入记录时,若是为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种状况,状况一,若是插入的值与已有的编号重复,则会出现出错信息,由于AUTO_INCREMENT数据列的值必须是惟一的;状况二,若是插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,能够跳过一些编号。扩展

(5)若是用UPDATE命令更新自增列,若是列值与已有的值重复,则会出错。若是大于已有值,则下一个编号从该值开始递增。

相关文章
相关标签/搜索