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

相關文章
相關標籤/搜索