99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-23 閱讀量: 1050
MySQL完整性約束

數(shù)據(jù)完整性約束指的是為了防止不符合規(guī)范的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,在用戶對數(shù)據(jù)進(jìn)行插入、修改、刪除等操作時,DBMS自動按照一定的約束條件對數(shù)據(jù)進(jìn)行監(jiān)測,使不符合規(guī)范的數(shù)據(jù)不能進(jìn)入數(shù)據(jù)庫,以確保數(shù)據(jù)庫中存儲的數(shù)據(jù)正確、有效、相容。

一、 數(shù)據(jù)完整性的分類

數(shù)據(jù)完整性分為以下四類:

1、實體完整性:規(guī)定表的每一行在表中是惟一的實體。

2、域完整性:是指表中的列必須滿足某種特定的數(shù)據(jù)類型約束,其中約束又包括取值范圍、精度等規(guī)定。

3、參照完整性:是指兩個表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)一致,保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中擴(kuò)散。

4、用戶定義的完整性:不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用必須滿足的語義要求。

二、完整性約束的類型

完整性約束可分為三種類型:與表有關(guān)的約束、域(Domain)約束、斷言(Assertion)

1、與表有關(guān)的約束:是表中定義的一種約束。可在列定義時定義該約束,此時稱為列約束,也可以在表定義時定義約束,此時稱為表約束。

包括列約束(表約束+NOT NULL)和表約束(PRIMARY KEY、foreign key、check、UNIQUE) 。

(1) not null(非空)約束: 只用于定義列約束。

語法:Colunm_name datatype | domain not null

(2) unique(惟一)約束:用于指明創(chuàng)建惟一約束的列上的取值必須惟一。

語法:Colunm_name datatype | domain unique

(3) primary key(主鍵)約束:用于定義基本表的主鍵,起惟一標(biāo)識作用,其值不能為null,也不能重復(fù),以此來保證實體的完整性。

語法:Colunm_name datatype | domain primary key

primary key 與 unique的區(qū)別:

在一個表中,只能定義一個primary key約束,但可定義多個unique約束。

對于指定為primary key的一個列或多個列的組合,其中任何一個列都不能出現(xiàn)空值,而對于unique所約束的惟一鍵,則允許為null,只是null值最多有一個。

(4) foreign key(外鍵)約束:定義了一個表中數(shù)據(jù)與另一個表中的數(shù)據(jù)的聯(lián)系。

foreign key約束指定某一個列或一組列作為外部鍵,其中包含外部鍵的表稱為子表,包含外部鍵所引用的主鍵的表稱為父表。系統(tǒng)保證,表在外部鍵上的取值要么是父表中某一主鍵,要么取空值,以此保證兩個表之間的連接,確保了實體的參照完整性。可以為表的一列或多列創(chuàng)建foreign key 約束,如果為多列創(chuàng)建 foreign key約束,將分別與主表中的相應(yīng)主鍵相對應(yīng)。

語法:Colunm_name datetype | domain references table_name(column)

(5) check(校驗)約束:用來檢查字段值所允許的范圍。DBMS每當(dāng)執(zhí)行delete,insert或update語句時,都對這個約束過濾。如果為true,則執(zhí)行。否則,取消執(zhí)行并提示錯誤。

列定義語法:Column datetype | domain check(search condition)

表約束語法:Constraint constraint_name check(search condition)

2、域(Domain)約束:在域定義中被定義的一種約束,它與在特定域中定義的任何列都有關(guān)系。

語法:create domain domain_name as data type

3、斷言(Assertion):在斷言定義時定義的一種約束,它可以與一個或多個表進(jìn)行關(guān)聯(lián)。不必與特定的列綁定,可以理解為能應(yīng)用于多個表的check約束,因此必須在表定義之外獨(dú)立創(chuàng)建斷言。

語法:create assertion constraint_name

check search condition

添加斷言后,每當(dāng)試圖添加或修改Emp_Sal表中的數(shù)據(jù)時,就對斷言中的搜索條件求值,如果為false,則取消執(zhí)行,給出提示。

0.0000
2
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子