MySQL 主鍵自增 Auto Increment用法

AUTO_INCREMENT簡介

MySQL的AUTO_INCREMENT屬性可以用於在插入新的記錄的時候,進行主鍵自增。

例如執行下面的SQL:

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;

執行結果如下:

+----+---------+
| 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將自動增長。

  2. 通過insert語句在AUTO_INCREMENT列插入更大的值,則序列會被重置爲最大值依次增加。

  3. 在使用MySQL時,若表中含自增字段(auto_increment類型),則向表中insert一條記錄後,可以調用last_insert_id()來獲得最近insert的那行記錄的自增字段值。

  4. 一道面試題

問:一張表,裏面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把Mysql重啓,再insert一條記錄,這條記錄的ID是18還是15 ?

答:如果表的存儲引擎是MyISAM,id是18,因爲MyISAM會將最大id記錄在文件裏;如果表的存儲引擎是InnoDB,id是15,因爲InnoDB會將最大id記錄在內存裏,重啓後會丟失。

Links

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章