#标识列 /* 又称为自增长列 含义:可以不用手动的插入值,系统提供默认的序列值 特点: 1、标识列必须和主键搭配吗?不一定,但要求是一个key(也可以是unique) 2、一个表可以有几个标识列?至多一个! 3、标识列的类型只能是数值型 4、标识列可以通过 SET auto_increment_increment=3;设置步长 可以通过 手动插入值,设置起始值 */ #一、创建表时设置标识列 DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT PRIMARY KEY AUTO_INCREMENT, NAME FLOAT UNIQUE, seat INT ); DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT , NAME FLOAT UNIQUE AUTO_INCREMENT, seat INT ); TRUNCATE TABLE tab_identity; # 要么 带着所有的字段,插入时,自增长列对应插入null INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john'); #要么 不带自增长列,插入时只插别的字段 INSERT INTO tab_identity(NAME) VALUES('lucy'); SELECT * FROM tab_identity; # 自增长列默认从1开始递增,步长为1 SHOW VARIABLES LIKE '%auto_increment%'; # auto_increment_increment:步长 # auto_increment_offset:起始位置(mysql中不能人为设置) SET auto_increment_increment=3; # 设置步长 #如果想自己设置起始位置:10 #先执行下一句通过 手动插入值,设置起始值 INSERT INTO tab_identity(id,NAME) VALUES(10,'john'); #然后 和以前一样,插入多行下一句: INSERT INTO tab_identity(NAME) VALUES('lucy'); #二、修改表时设置标识列 DROP TABLE IF EXISTS test; CREATE TABLE test( id INT PRIMARY KEY, NAME VARCHAR(20) ); ALTER TABLE test MODIFY COLUMN id INT AUTO_INCREMENT; INSERT INTO test VALUES (NULL,'aaa'); SELECT * FROM test; TRUNCATE TABLE test; #清空表,注意与DROP TABLE IF EXISTS test; 的区别,一个是清空,另一个删除 SHOW VARIABLES LIKE '%auto_increment%'; SET auto_increment_increment = 2; INSERT INTO test VALUES(5,'haha'); INSERT INTO test VALUES(NULL,'haha');#运行多次该句 SELECT * FROM test; # 结果是 id = 5,7,9.... DESC test; #二、修改表时删除标识列 ALTER TABLE test MODIFY COLUMN id INT ; DESC test;