1.域完整性:---------匹配完整性:非空、缺省
字段/列mysql
2.實體完整性:-------匹配完整性:主鍵、惟一鍵
記錄/行sql
3.引用完整性:-------匹配完整性:外鍵
表與表之間code
主鍵:primary key
惟一鍵:unique
非空:not null
缺省:default
外鍵:foreign key索引
主鍵、惟一鍵、外鍵都會自動建立索引
主鍵:一個表只能有一個主鍵,其能夠對應一個字段,也能夠對應多個字段(組合主鍵)
惟一鍵:也成爲候選主鍵(跟主鍵的區別在於能夠存儲null值)
外鍵:來源於主表的主鍵或惟一鍵(可容許爲空,且其值必須在主表中出現過)table
constraint 約束名 約束類型(字段名) references 主表(主鍵字段或惟一鍵字段)
建立外鍵約束class
constraint 約束名 foreign key(對應字段) references 主表(主鍵字段或惟一鍵字段)
建立組合主鍵date
primary key (字段1,字段2)
對於已經存在的表,建立惟一鍵約束引用
alter table 表名 add constraint 約束名 unique(字段名);
刪除約束的數據 先刪除子表數據,再刪除主表數據im
級聯刪除數據
on delete cascade
級聯更新
on update cascade
關掉mysql 外鍵約束
SET FOREIGN_KEY_CHECKS=0;
打開mysql 外鍵約束
SELECT @@FOREIGN_KEY_CHECKS;
刪除外鍵
注意:此語句在刪除外鍵後不能關聯刪除該外鍵自動產生的約束
alter table 表名 drop foreign key 外鍵名稱;
刪除惟一鍵
注意:惟一鍵刪除後對應的索引也會自動刪除
alter table 表名 drop index 惟一鍵字段名;
刪除指定名稱的索引
alter table 表名 drop index 索引名稱;
提醒:對於有主外關聯的表,刪除表中數據,若是無刪除的級聯操做,那麼刪除主表數據以前,必須先刪除從表對應數據