8.MySQL的自增(AUTO_INCREMENT)

目录

1.为什么需要自增

2.语法

3.注意

4.演示

5.查看自动增长值

6.修改自动增长

7.删除自动增长

8.添加自动增长


1.为什么需要自增

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

2.语法

字段名 数据类型 AUTO_INCREMENT

3.注意

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

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

  3. 必须定义为键

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

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

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

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

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

  9. 使用DELETE删除记录时,自动增长值不会减小或填补空缺。

4.演示

CREATE DATABASE mahaiwuji;
USE mahaiwuji;
CREATE TABLE student (
	sid INT PRIMARY KEY AUTO_INCREMENT,
	sname VARCHAR (32)
) ENGINE = INNODB DEFAULT CHARSET = utf8;

INSERT INTO student(sname) VALUES ('码海无际1');
INSERT INTO student VALUES (0,'码海无际2');
INSERT INTO student VALUES (4,'码海无际3');
INSERT INTO student(sname) VALUES ('码海无际4');
INSERT INTO student VALUES (3,'码海无际3');
DELETE FROM student WHERE sid=5;
INSERT INTO student(sname) VALUES ('码海无际4');

5.查看自动增长值

语法

SHOW CREATE TABLE student;

运行结果

CREATE TABLE `student` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

6.修改自动增长

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

7.删除自动增长

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

8.添加自动增长

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

 

你可能感兴趣的:(MySQL)