MySQL自增約束
阿新 • • 發佈:2020-11-23
1、自增約束
特點:
(1)一個表只能有一個自增約束
因為一個表只有一個維護自增值的變數。
(2)自增約束的列只能是整數列
(3)自增約束的列必須是鍵列(主鍵,唯一鍵,外來鍵),
實際中一般是主鍵自增最多
2、如何在建表時指定某個列自增
create table 【資料庫名.】表名稱(
欄位名1 xxInt primary key auto_increment,
欄位名2 資料型別 【unique key】【not null】 default 預設值,
欄位名3 資料型別 default 預設值,
。。。。
);
create table t_stu( sid int auto_increment, #錯誤 sname varchar(20) );
ERROR 1075 (42000): Incorrect table definition;
there can be only one auto column and it must be defined as a key
create table t_stu(
sid int primary key auto_increment,
sname varchar(20)
);
mysql> desc t_stu; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | sid | int(11) | NO | PRI | NULL | auto_increment | | sname | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
3、如何給自增列新增資料呢
自增列,如果指定值,就按照指定的來,如果沒有指定值就自增。
如果指定的值是0或null,就按照自增的來。
insert into t_stu values('張三');#錯誤的 ERROR 1136 (21S01): Column count doesn't match value count at row 1' insert into t_stu(sname) values('張三'); #sid=1 insert into t_stu(sname) values('李四'); #sid=2 insert into t_stu values(5,'王五'); #sid=5 insert into t_stu(sname) values('趙六'); #sid=6 insert into t_stu values(0,'錢七'); #sid=7 insert into t_stu values(null,'王八'); #sid = 8 insert into t_stu values(-1,'負數'); #sid=-1 insert into t_stu(sname) values('測試'); #sid=9 insert into t_stu values(3,'333'); #sid=3 insert into t_stu(sname) values('測試頂頂頂頂');#sid=10
建議:正常使用時,不要亂插
4、建表後增加自增
alter table 【資料庫名.】表名稱 modify 欄位名 資料型別 auto_increment;
5、如何取消自增
alter table 【資料庫名.】表名稱 modify 欄位名 資料型別;