完整性約束條件主要有:primary key(主鍵), auto_increment(自增長), poreign key(外鍵), not null(非空), unique key(唯一), default(默認值)
一、primary key:
設置主鍵的作用:作為一條數據的唯一標識,像每個人的身份證一樣。
1)一般加在無意義的字段上,如 id
2)標主鍵字段的要求:值不重復且值具有唯一性。主鍵不能為空
3)可以設置“單字段主鍵”和“多字段主鍵(復合主鍵)”,用多個字段確定唯一性
4)primary書寫時可省略
#設置單字段主鍵 create TABLE if not EXISTS student( id int PRIMARY key, #設置主鍵 name varcahr(20) )engine=innodb charset = utf8;
#設置多字段段主鍵
create TABLE if not EXISTS timez(
id int auto_increment,
atime year,
card char(18),
primary key(id,card) #將id與card同時設置為主鍵,設置后的結構圖如下所示:
)engine=innodb charset = utf8;
desc timez; #用此3命令查看表結構
![]()
注意點:當設置復合主鍵時,如設置2個字段為主鍵,可以允許2個字段中的某一個值可以與其他值重復,但是不可以2個值均重復,插入值進行驗證:
insert into timez values("1",'2000','11111111111111111');
insert into timez values("1",'2000','11111111111111112'); #均可添加值成功
二、auto_increment:
1)通過設置主鍵進行自增長,默認從1開始,每次+1
2)一個表中只能有1個自增長字段,而且自增長的字段一定配合主鍵使用,也就是說“被標識為自增長的字段,一定是主鍵,但是主鍵不一定是自增長的”自增長只對整數類、整數列有效,對字符串無意義
#新建數據庫 create TABLE if not EXISTS timea( id int PRIMARY key auto_increment, #將id設置為主鍵,並且為自增長 atime year )engine=innodb charset = utf8;
#向數據庫插入值,驗證auto_increment
insert into timea values(1,'2000'); #向timea表中自己給定自增長列的值為1
insert into timea(atime ) values('2000'); #直接插入atime的值,id自動填充值為2
insert into timea values(null,'2000'); #用null也可以,id自動填充3
insert into timea values(default,'2000'); #用default也可以,id自動填充4
#已創建的表,修改自增長開始的值
alter table timea auto_increment=9; #重新設定了自增長的值,則再次插入數據時,id的值為9,依次插入時+1
#開始創建表時,自定義 自增長開始的值
create TABLE if not EXISTS timea( id int PRIMARY key auto_increment, #將id設置為主鍵,並且為自增長 atime year )engine=innodb auto_increment=8 charset = utf8; #創建表時手動設定了自增長的值為8,則插入數據時,id的值不從1開始,而是8,依次插入時+1
#向timea表中自己給定自增長列的值為1