實體完整性

2021-10-04 15:31:36 字數 2308 閱讀 3817

一、mysql資料完整性約束

資料完整性約束的概念:

在表中定義完整性約束是作為資料定義的一部分,定義了完整性約束,資料庫會隨時檢測處於更新狀態的資料庫內容是否符合相關的完整性約束,保證資料的正確性與一致性。完整性約束既能有效地防止對資料庫的意外破壞和非法訪問,提高完整性檢測的效率,還能減輕資料庫程式設計人員的工作負擔。

常用的約束條件有6種:主鍵(primary key)約束、外來鍵(foreign key)約束、唯一性(unique)約束,預設值(default)約束、非空(not null)約束以及檢查(check)約束。

資料完整性約束包括:定義實體完整性(主鍵約束、候選鍵約束)

定義參照完整性(外來鍵約束)

使用者定義完整性(非空約束、預設值、自增等)

1.定義實體完整性:

實體完整性規則是指關係的主屬性不能取空值,即主鍵和候選鍵在關係中所對應的屬性不能取空值,實體完整性通過主鍵約束和候選鍵約束來實現的。

1)主鍵(primary key)約束:表中某一列或某些列構成的乙個組合,多個列組合而成的主鍵稱為復合主鍵,主鍵遵循的規則如下:

a.每乙個表只能定義乙個主鍵;

b.主鍵的值(鍵值)能夠唯一標識表中的每一行記錄,且不能為null,即表中兩條不同的記錄在主鍵上不能具有相同的值,這是唯一性原則;

c.復合主鍵不能包含不必要的多餘列,即當從乙個復合主鍵中刪除一列後,如剩下的列仍然滿足唯一性原則,那麼這個復合主鍵是不正確的,這是最小化原則;

d.乙個列名在復合主鍵的列表中只能出現一次。

e.定義主鍵約束後,資料庫會自動為主鍵建立乙個唯一索引,用於在查詢中使用主鍵對資料進行快速檢索,該索引名的預設為primary,也可以重新命名;

主鍵約束可以在create table或alter table語句中使用關鍵字primary key來實現,主要方式有兩種:

一種是列級完整性約束,只需在表中某欄位定義後加上關鍵字primary key即可 。

一種是表級完整性約束,需要在表中所有字段定義後新增一條primary key語法格式的子句。

列級完整性約束方式定義主鍵,即在建立表時,在某個欄位後加關鍵字primary key。

表級完整性約束方式定義主鍵,即建立表時,表中所有字段定義後新增一條primary key(列名1,…,列名n),適合定義多列所構成的主鍵。

表級完整性約束方式定義主鍵,並指定主鍵約束名稱,適合定義多列所構成的主鍵。

語法:constraint 約束名字 primary key(列名1,…,列名n)。

新增主鍵約束用法:alter table語句中使用關鍵字primary key來實現。

新增主鍵約束方式,定義完資料表後可以再新增。

語法:alter table 表名 add primary key(列名1,…,列名n);

或 alter table 表名 add constraint 約束名字 primary key(列名1,…,列名n);

*刪除主鍵約束用法:alter table語句中使用關鍵字primary key來實現。

刪除主鍵約束時,表中只能定義乙個主鍵,無論主鍵約束有沒有名稱,都使用以下用法:

語法:alter table 表名 drop primary key;

2)唯一(候選鍵)約束:如果希望表中的某個字段值不重複,是唯一的值,可以為該字段新增唯一性約束。一張表中可以有多個唯一性約束,且滿足唯一性約束的字段可以取null值,主鍵約束與候選鍵約束的區別如下:

a.每乙個表只能定義乙個主鍵,但可以定義多個候選鍵;

b.定義主鍵的列不能為null,定義為候選鍵允許null存在;

c.定義主鍵約束時,系統會自動產生主鍵索引,定義候選鍵時,系統自動產生候選鍵索引。

列級完整性約束方式定義候選鍵,即建立表時,在某個欄位後加關鍵字unique。

表級完整性約束方式定義候選鍵,並指定候選鍵約束名稱,適合定義多列所構成的候選鍵。

語法:constraint 約束名字 unique(列名1,…,列名n)。

*新增候選鍵約束用法:alter table語句中使用關鍵字unique來實現。

新增候選鍵約束方式,定義完資料表後可以再新增。

語法:alter table 表名 add constraint 約束名字 unique(列名1,…,列名n);

或 alter table 表名 add unique(列名1,…,列名n);

*刪除候選鍵約束用法:alter table語句中使用關鍵字unique來實現。

刪除候選鍵約束時,實際刪除的是唯一性索引,應使用drop index子句刪除,如果沒有給約束命名,自動將欄位名定義為索引名,其用法如下:

語法:alter table 表名 drop index 約束名|候選鍵欄位名;

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

資料庫實體完整性

對單屬性結構定義約束條件有兩種方法 列級約束條件 表級約束條件 例如 將student 表中的sno屬性定義為碼 create table student sno char 9 primary key,在列級定義主碼 sname char 20 not null,s char 2 sage smal...

mysql 完整性 詳解MySQL 資料完整性

資料完整性分為 實體完整性,域完整性,參考完整性。參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表...