數據庫表約束mysql
1:約束保證數據的完整性與一致性sql
2:約束粉尾表級約束和列級約束數據庫
3:約束類型spa
not nullcode
primary key索引
unique keyrem
default table
foreign keyclass
4:建立外鍵約束的要求數據類型
父表和字表必須使用相同的存儲引擎
數據表的存儲引擎只能是InnoDB
外鍵列和參照列必須具備相同的數據類型,數字長度與符號位必須相同,字符長度能夠不一樣
s外鍵列與參照列必須建立索引,若是外鍵列不存在索引,mysql自動建立
eg:
create table provinces( id smallint unsigned primary key auto_increment, pname varchar(16) not null )engine=InnoDB default character set utf8;
create table users( id smallint unsigned primary key auto_increment, username varchar(20) not null, pid smallint unsigned not null, foreign key(pid) references provinces(id) )engine=InnoDB default character set utf8;
外鍵操做的參照操做
1:CASCADE從父表刪除或更新且自動刪除或更新字表總的行
2:SET NULL從父表刪除或更新行並設置字表中的外鍵列爲NULL,若是使用改選項必須保證字表列沒有指定爲not null
3:RESTRICT拒絕對父表的刪除或更新操做
4:NO ACTION標準的SQL關鍵字,與RESTRICT相同
create table users1(
id smallint unsigned primary key auto_increment,
username varchar(20) not null,
pid smallint unsigned not null,
foreign key(pid) references provinces(id) on delete CASCADE
)engine=InnoDB default character set utf8;