8.MySQL的自增(AUTO_INCREMENT)


1.为什么需要自增

为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败。为主键生成自动增长的值可以解决这种问题。

2.语法

字段名 数据类型 AUTO_INCREMENT

3.注意

  1. 一个表中只能有一个自动增长字段

  2. 该字段的数据类型是整数类型

  3. 必须定义为键

  4. 若为自动增长字段插入NULL、0、DEFAULT或在插入时省略该字段,该字段就会使用自动增长值;

  5. 若插入的是一个具体值,则不会使用自动增长值

  6. 自动增长值从1开始自增,每次加1。

  7. 若插入的值大于自动增长的值,则下次插入的自动增长值会自动使用最大值加1;

  8. 若插入的值小于自动增长值,则不会对自动增长值产生影响。

  9. 使用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

6.修改自动增长

1 ALTER TABLE student AUTO_INCREMENT = 10;
2 INSERT INTO student(sname) VALUES ('码海无际5');

7.删除自动增长

1 ALTER TABLE student MODIFY sid INT;
2 INSERT INTO student VALUES (11,'码海无际6');
3 -- 下面这行无法运行,因为自增被删除,必须手动插入主键
4 INSERT INTO student(sname) VALUES ('码海无际7');

8.添加自动增长

1 ALTER TABLE student MODIFY sid INT UNSIGNED AUTO_INCREMENT;
2 INSERT INTO student(sname) VALUES ('码海无际7');

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM