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 |
+----+---------+
複製代碼
id列設置爲AUTO_INCREMENT之後,在inserte語句中, 若是id列爲空, 或者id列值爲0 (SQL Mode不是NO_AUTO_VALUE_ON_ZERO), 或者id列值NULL (id列爲NOT NULL), 那麼id將自動增加。github
經過insert語句在AUTO_INCREMENT列插入更大的值,則序列會被重置爲最大值依次增長。面試
在使用MySQL時,若表中含自增字段(auto_increment類型),則向表中insert一條記錄後,能夠調用last_insert_id()來得到最近insert的那行記錄的自增字段值。sql
一道面試題bash
問:一張表,裏面有ID自增主鍵,當insert了17條記錄以後,刪除了第15,16,17條記錄,再把Mysql重啓,再insert一條記錄,這條記錄的ID是18仍是15 ?ui
答:若是表的存儲引擎是MyISAM,id是18,由於MyISAM會將最大id記錄在文件裏;若是表的存儲引擎是InnoDB,id是15,由於InnoDB會將最大id記錄在內存裏,重啓後會丟失。spa