MySQL自增約束

@一葉之秋發表於2020-11-23

1、自增約束
特點:
(1)一個表只能有一個自增約束
因為一個表只有一個維護自增值的變數。
(2)自增約束的列只能是整數列
(3)自增約束的列必須是鍵列(主鍵,唯一鍵,外來鍵),
實際中一般是主鍵自增最多

2、如何在建表時指定某個列自增

create table 【資料庫名.】表名稱(
	欄位名1 xxInt  primary key auto_increment,
	欄位名2 資料型別 【unique key】【not nulldefault 預設值,
	欄位名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 欄位名 資料型別;

相關文章