數據完整性 1.域完整性: 匹配完整性:非空、預設 欄位/列 2.實體完整性: 匹配完整性:主鍵、唯一鍵 記錄/行 3.引用完整性: 匹配完整性:外鍵 表與表之間 約束:constraint MySQL中的約束分類 主鍵:primary key 唯一鍵:unique 非空:not null 預設:d ...
數據完整性
1.域完整性:---------匹配完整性:非空、預設
欄位/列
2.實體完整性:-------匹配完整性:主鍵、唯一鍵
記錄/行
3.引用完整性:-------匹配完整性:外鍵
表與表之間
約束:constraint
MySQL中的約束分類
主鍵:primary key
唯一鍵:unique
非空:not null
預設:default
外鍵:foreign key
主鍵、唯一鍵、外鍵都會自動創建索引
主鍵:一個表只能有一個主鍵,其可以對應一個欄位,也可以對應多個欄位(組合主鍵)
唯一鍵:也成為候選主鍵(跟主鍵的區別在於可以存儲null值)
外鍵:來源於主表的主鍵或唯一鍵(可允許為空,且其值必須在主表中出現過)
創建約束
constraint 約束名 約束類型(欄位名) references 主表(主鍵欄位或唯一鍵欄位)
創建外鍵約束
constraint 約束名 foreign key(對應欄位) references 主表(主鍵欄位或唯一鍵欄位)
創建組合主鍵
primary key (欄位1,欄位2)
對於已經存在的表,創建唯一鍵約束
alter table 表名 add constraint 約束名 unique(欄位名);
刪除約束的數據 先刪除子表數據,再刪除主表數據
級聯刪除
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 索引名稱;
提醒:對於有主外關聯的表,刪除表中數據,如果無刪除的級聯操作,那麼刪除主表數據之前,必須先刪除從表對應數據