資料完整性約束

2021-09-11 14:07:00 字數 2078 閱讀 1725

資料完整性約束定義:是指資料的正確性和相容性,為了防止資料庫中存在不符合語義的資料,防止資料庫中存在不正確的資料。在關係型模型中提供了三種規則:實體完整性,參照完整性,和使用者定義完整性。

實體完整性規則:實體是乙個資料物件,是指客觀存在並可以相互區分的事務,如乙個學生或乙個職員。實體完整性規則是指關係的主屬性,即主鍵的組成不能為空,也就是關係的主屬性不能為空值null。實體完整性是通過主鍵約束和候選鍵約束來實現的。

1.主鍵約束

主鍵可以是表中的一列也可以是表中多個列的組合,多個列組合而成的主鍵也叫復合主鍵。

規則·:

(1)每個表只能定義乙個主鍵;

(2)唯一性原則。主鍵的值必須能夠唯一標識表中的每一行記錄。

(3)最小化原則,復合主鍵·不能包含不必要的多餘列;

(4)乙個列名在復合主鍵的列表中只能出現一次。

作為列的完整性約束:

create table(

字段 型別()not null primary key;

作為表的完整性約束:

create table(

字段 型別()not null,

primary key(字段,欄位2...)

2.候選鍵約束:

定義:若乙個屬性集能唯一標識元組,且不含多餘的屬性,那麼這個屬性集稱為關係的候選鍵。任何時候候選鍵的值必須是唯一的,且不能為空null。其可以在create table 和alter table 使用關鍵字unique來定義。

候選鍵與主鍵區別:(1)乙個表只能建立乙個主鍵,但可以定義多個候選鍵。(2)定義主鍵系統會主動建立primary key 索引,而定義候選鍵約束,系統會自動建立unique索引。

參照完整性規則:即魔偶關係的屬性值需要參照另一關係的屬性和值,這就叫參照。參照完整性規則就是定義主鍵和外來鍵之間額引用規則,它對關係間引用資料的一種限制。目前只有innodb引擎支援外來鍵約束。

innodb引擎型別中宣告外來鍵基本語法格式如下:

foreign key (index_col_name,...) reference_definition;

frference_definition 主要用於定義外來鍵所參照的表,列,參照動作的宣告和實施策略:

references tbl_name [(col_name(length) asc|desc)]

[match full|match partial|martch ******]

[on delete reference_option]

[on update reference_option];

reference_option選項有以下幾種:restrict(限制策略:當要刪除或更新被參照表中被參照列上,並在外鍵**現的值時,系統拒絕對被參照表的刪除或更新操作。)casecade(級聯策略:從被參照表中刪除或更新資料記錄時,自動刪除或更新參照表中匹配的記錄行。)set null (置空策略:當從被參照表中刪除或更新記錄行時,設定參照表中與之對應的外來鍵列的值為null.這個策略需要被參照表中外鍵列沒有宣告限定詞not null。)no action(不採取實施策略:當乙個相關的外鍵值在被參照表中,刪除或者更新被參照表中鍵值的動作不被允許。該策略的動作語言與restrict 相同)

使用者定義完整性規則:針對某一應用環境的完整性約束條件,其反映了某一具體應用所涉及的資料要求。

1:非空約束 not null;

2:check約束:check(表示式)

3:觸發器

命名完整性約束:定義約束的同時對約束進行命名。primary key的名稱只能是primary;

語法:constraint 約束名

primary key 短語|foriengn key 短語|check 短語

刪除完整性約束:alter table table_name drop primary key |foriegn key|... 約束名;

修改完整性約束:先刪除約束,再新增相同約束。alter table table_name add constraint ...;

資料完整性約束

實體完整性 實體就是指一條記錄。這種完整性就是為了保證每一條記錄不是重覆記錄。是有意義的 主鍵 非空和唯一.乙個表只有乙個主鍵,但是乙個主鍵可以是由多個字段組成的 組合鍵 標識列 系統自動生成,永遠不重複 唯一鍵 唯一,但是可以為null,只能null一次 域完整性 域就是指字段,它是為了保證欄位的...

資料完整性約束

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

完整性約束

create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...