MySQL數據庫:數據完整性及約束的應用

數據完整性

1.域完整性:---------匹配完整性:非空、缺省
字段/列mysql

2.實體完整性:-------匹配完整性:主鍵、惟一鍵
記錄/行sql

3.引用完整性:-------匹配完整性:外鍵
表與表之間code

約束:constraint

MySQL中的約束分類

主鍵: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 索引名稱;

提醒:對於有主外關聯的表,刪除表中數據,若是無刪除的級聯操做,那麼刪除主表數據以前,必須先刪除從表對應數據

相關文章
相關標籤/搜索