1.為什么需要自增
為數據表設置主鍵約束后,每次插入記錄時,如果插入的值已經存在,會插入失敗。為主鍵生成自動增長的值可以解決這種問題。
2.語法
字段名 數據類型 AUTO_INCREMENT
3.注意
-
一個表中只能有一個自動增長字段
-
該字段的數據類型是整數類型
-
必須定義為鍵
-
若為自動增長字段插入NULL、0、DEFAULT或在插入時省略該字段,該字段就會使用自動增長值;
-
若插入的是一個具體值,則不會使用自動增長值
-
自動增長值從1開始自增,每次加1。
-
若插入的值大於自動增長的值,則下次插入的自動增長值會自動使用最大值加1;
-
若插入的值小於自動增長值,則不會對自動增長值產生影響。
-
使用DELETE刪除記錄時,自動增長值不會減小或填補空缺。
4.演示
1 CREATE DATABASE mahaiwuji; 2 USE mahaiwuji; 3 CREATE TABLE student ( 4 sid INT PRIMARY KEY AUTO_INCREMENT, 5 sname VARCHAR (32) 6 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 7 8 INSERT INTO student(sname) VALUES ('碼海無際1'); 9 INSERT INTO student VALUES (0,'碼海無際2'); 10 INSERT INTO student VALUES (4,'碼海無際3'); 11 INSERT INTO student(sname) VALUES ('碼海無際4'); 12 INSERT INTO student VALUES (3,'碼海無際3'); 13 DELETE FROM student WHERE sid=5; 14 INSERT INTO student(sname) VALUES ('碼海無際4');
5.查看自動增長值
語法
1 SHOW CREATE TABLE student;
運行結果
1 CREATE TABLE `student` ( 2 `sid` int(11) NOT NULL AUTO_INCREMENT, 3 `sname` varchar(32) DEFAULT NULL, 4 PRIMARY KEY (`sid`) 5 ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
1 ALTER TABLE student AUTO_INCREMENT = 10; 2 INSERT INTO student(sname) VALUES ('碼海無際5');
1 ALTER TABLE student MODIFY sid INT; 2 INSERT INTO student VALUES (11,'碼海無際6'); 3 -- 下面這行無法運行,因為自增被刪除,必須手動插入主鍵 4 INSERT INTO student(sname) VALUES ('碼海無際7');
1 ALTER TABLE student MODIFY sid INT UNSIGNED AUTO_INCREMENT; 2 INSERT INTO student(sname) VALUES ('碼海無際7');