MySQL 主键自增 Auto Increment用法

AUTO_INCREMENT简介

MySQL的AUTO_INCREMENT属性能够用于在插入新的记录的时候,进行主键自增。html

例如执行下面的SQL:mysql

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');

SELECT * FROM animals;
复制代码

执行结果以下:git

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+
复制代码

AUTO_INCREMENT总结

  1. id列设置为AUTO_INCREMENT之后,在inserte语句中, 若是id列为空, 或者id列值为0 (SQL Mode不是NO_AUTO_VALUE_ON_ZERO), 或者id列值NULL (id列为NOT NULL), 那么id将自动增加。github

  2. 经过insert语句在AUTO_INCREMENT列插入更大的值,则序列会被重置为最大值依次增长。面试

  3. 在使用MySQL时,若表中含自增字段(auto_increment类型),则向表中insert一条记录后,能够调用last_insert_id()来得到最近insert的那行记录的自增字段值。sql

  4. 一道面试题bash

问:一张表,里面有ID自增主键,当insert了17条记录以后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18仍是15 ?ui

答:若是表的存储引擎是MyISAM,id是18,由于MyISAM会将最大id记录在文件里;若是表的存储引擎是InnoDB,id是15,由于InnoDB会将最大id记录在内存里,重启后会丢失。spa

Links

相关文章
相关标签/搜索