資源描述:
《sql數(shù)據(jù)庫完整性約束》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章數(shù)據(jù)完整性5.1數(shù)據(jù)完整性的基本概念數(shù)據(jù)完整性包括實(shí)體完整性、域完整性、參照完整性和用戶定義的完整性。1.實(shí)體完整性(EntityIntegrity)實(shí)體完整性用于保證數(shù)據(jù)庫中數(shù)據(jù)表的每一個(gè)特定實(shí)體都是唯一的。它可以通過主鍵約束(PRIMARYKEY)、唯一鍵約束(UNIQUE)、索引或標(biāo)識屬性(IDENTITY)來實(shí)現(xiàn)。2.域完整性(DomainIntegrity)域完整性就是保證數(shù)據(jù)庫中的數(shù)據(jù)取值的合理性,即保證指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍。通過為表的列定義數(shù)據(jù)類型以及檢查
2、約束(CHECK)、默認(rèn)定義(DEFAULT)、非空(NOTNULL)和規(guī)則實(shí)現(xiàn)限制數(shù)據(jù)范圍,保證只有在有效范圍內(nèi)的值才能存儲到列中。3.參照完整性(ReferentialIntegrity)參照完整性定義了一個(gè)關(guān)系數(shù)據(jù)庫中,不同的表中列之間的關(guān)系(父鍵與外鍵)。要求一個(gè)表中(參照表)的一列或列組合的值必須與另一個(gè)表(被參照表)中的相關(guān)一列或列組合的值相匹配。被引用的列或列組合稱為父鍵,父鍵必須是主鍵或唯一鍵,通常父鍵為主鍵,主鍵表(被參照表)是主表。引用父鍵的一列或列組合稱為外鍵,外鍵表(參照表)是子表。
3、子表的外鍵必須與主表的主鍵相匹配,只要依賴某一主鍵的外鍵存在,主表中包含該主鍵的行就不能被刪除。4.用戶定義的完整性(User-definedIntegrity)這是由用戶定義的完整性。用戶可以根據(jù)自己的業(yè)務(wù)規(guī)則定義不屬于任何完整性分類的完整性。5.2約束約束是通過限制列中數(shù)據(jù)、行中數(shù)據(jù)以及表之間數(shù)據(jù)取值從而保證數(shù)據(jù)完整性的非常有效和簡便的方法。5.2.1主鍵(PRIMARYKEY)約束PRIMARYKEY約束在表中定義一個(gè)主鍵,唯一的標(biāo)識表中的行。一個(gè)表只能有一個(gè)PRIMARYKEY約束。當(dāng)向表中的現(xiàn)有列
4、添加PRIMARYKEY約束時(shí),SQLServer將檢查列中現(xiàn)有的數(shù)據(jù)以確?,F(xiàn)有數(shù)據(jù)遵從主鍵的規(guī)則,即無空值、無重復(fù)值。每個(gè)表都應(yīng)有一個(gè)主鍵。主鍵可以是一列或列組合。1.利用ManagementStudio定義(刪除)主鍵2.利用T-SQL語句定義(刪除)主鍵(1)在創(chuàng)建表時(shí)創(chuàng)建主鍵約束其語法格式如下CREATETABLE數(shù)據(jù)表名(列名數(shù)據(jù)類型[CONSTRAINT約束名]PRIMARYKEY)例:用命令方式新建如下所示的bm表,設(shè)置主鍵名為pk_bh。字段名數(shù)據(jù)類型允許空部門編號char(5)否,主鍵部門
5、名稱varchar(10)否電話號碼char(13)是CREATETABLEbm(5-1)(部門編號CHAR(5)NOTNULLCONSTRAINTpk_bhPRIMARYKEY,部門名稱VARCHAR(10)NOTNULL,電話號碼CHAR(13))(2)向已有表中添加主鍵約束其語法格式如下。ALTERTABLE表名ADD[CONSTRAINT約束名]PRIMARYKEY(列名1[,…n]))ALTERTABLEcj(5-2)ADDCONSTRAINTpk_xhkchPRIMARYKEY(學(xué)號,課程號)例
6、:先用圖形方式刪除cj表中的主鍵,然后用命令方式添加主鍵為學(xué)號和課程號,主鍵名為pk_xhkch。(3)刪除主鍵約束其語法格式如下:ALTERTABLE表名DROPCONSTRAINT約束名例:要刪除cj表中的主鍵約束pk_xhkch:ALTERTABLEcj(5-3)DROPCONSTRAINTpk_xhkch5.2.2唯一鍵(UNIQUE)約束可使用UNIQUE約束確保在非主鍵列中不輸入重復(fù)值。在允許空值的列上保證唯一性時(shí),應(yīng)使用UNIQUE約束而不是PRIMARYKEY約束,不過在該列中只允許有一個(gè)N
7、ULL值。一個(gè)表可以定義多個(gè)UNIQUE約束,但只能定義一個(gè)PRIMARYKEY約束。1.利用ManagementStudio定義(刪除)唯一性約束步驟1:右鍵要建立唯一約束的表選擇“修改”。步驟2:右擊要設(shè)置唯一約束的字段(列)選擇“索引/鍵”。步驟3:在彈出的窗口中點(diǎn)擊“添加”,在右邊窗口的“名稱”處輸入約束名,在類型中選擇“唯一鍵”,點(diǎn)擊“列”的瀏覽按鈕選中要設(shè)置為唯一約束的字段(如出生日期)。步驟4:點(diǎn)擊“關(guān)閉”按鈕,保存即可。刪除方法與建立的步驟類似。2.利用T-SQL語句定義(刪除)唯一性約束(
8、1)在創(chuàng)建表時(shí)創(chuàng)建唯一性約束其語法格式如下。語法格式1:(只有一個(gè)字段作為唯一約束)CREATETABLE數(shù)據(jù)表名(列名數(shù)據(jù)類型CONSTRAINT約束名UNIQUE)【例5.3】創(chuàng)建和kc表結(jié)構(gòu)相同的kc_new表,設(shè)置課程名為唯一約束,約束名為ix_kcm1。CREATETABLEkc_new(5-4)(課程號CHAR(4)NOTNULLCONSTRAINTpk_kch1PRIMARYKEY,課程名CHAR(