133标识列
#标识列 /* 又称为自增长列 含义:可以不用手动的插入值,系统提供默认的序列值 好处:不用我们自己插入值,也不用关心值是否重复的问题。因为它肯定不重复。它默认的起始值是1 特点: 1、标识列必须和主键搭配吗?不一定,但要求是一个key DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT AUTO_INCREMENT, NAME varchar(20) #unique--唯一键,也是一个key ); 图1 2、一个表可以有几个标识列?至多一个! DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT AUTO_INCREMENT, NAME varchar(20), seat INT UNIQUE AUTO_INCREMENT ); 图2 3、标识列的类型只能是数值型(int,float,double...),只不过一般是int DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT, NAME varchar(20) AUTO_INCREMENT, seat INT ); 图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 AUTO_INCREMENT, ); TRUNCATE TABLE tab_identity; INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john'); #为了保证值与字段数一致,需要插入null INSERT INTO tab_identity(NAME) VALUES('lucy'); SELECT * FROM tab_identity; SHOW VARIABLES LIKE '%auto_increment%'; auto_increment_increment #步长,每次增长的值。默认每次增长1 auto_increment_increment #偏移量,默认是1.即:起始值是1.不能被修改(其实也可以被修改,例如下),设置成其他值也没有效果,默认还是1 例: TRUNCATE TABLE tab_identity; INSERT INTO tab_identity(id,NAME) VALUES(10,'john'); #相当于把起始值(id)修改为了10 INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john'); #id=11 SET auto_increment_increment=3; #(1,4,7,10,13,16,...),一旦修改了代表当前连接下的所有值都被修改了 #二、修改表时设置标识符 DROP TABLE IF EXISTS tab_identity; CREATE TABLE tab_identity( id INT, NAME float, seat INT ); alter table tab_identity modify column id int primary key AUTO_INCREMENT; #三、修改表时删除标识列 alter table tab_identity modify column id int PRIMARY KEY;