zoukankan      html  css  js  c++  java
  • MySQL基础之 AUTO_INCREMENT

    AUTO_INCREMENT

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

    语法(这里是和联合索引一起举例讲解):

    使用单个索引

    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)

    总结:对于InnoDB表,自动增长列必须是索引,一般习惯上设置主键为自动增长列。如果是组合索引,自动增长列必须是组合索引的第一列。

    总结auto_increment的几种注意事项:

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

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

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

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

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

  • 相关阅读:
    iOS图片拉伸技巧
    Swift和OC混合使用
    【转】动态计算UITableViewCell高度详解
    AutoLayout~Label
    【转】初探 iOS8 中的 Size Class
    Objective-C runtime~
    [转]Objective-C中的类和对象(instance)
    Masonry~
    [转] ios学习--openURL的使用方法
    Autolayout~代码实现
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/9848748.html
Copyright © 2011-2022 走看看