数据库原理与应用(SQL Server)笔记 第六章 数据完整性
目錄
- 前言
- 一、實體完整性
- (一)主鍵約束(PRIMARY KEY約束)
- 1、創(chuàng)建表時創(chuàng)建主鍵約束
- 2、修改表時創(chuàng)建主鍵約束
- 3、刪除創(chuàng)建的主鍵約束
- (二)唯一性約束(UNIQUE約束)
- 1、創(chuàng)建表時創(chuàng)建唯一性約束
- 2、修改表時創(chuàng)建唯一性約束
- 3、刪除創(chuàng)建的唯一性約束
- 二、參照完整性
- (一)創(chuàng)建表時創(chuàng)建外鍵約束
- 1、創(chuàng)建表時定義列級外鍵約束
- 2、創(chuàng)建表時定義表級外鍵約束
- (二)修改表時創(chuàng)建外鍵約束
- (三)刪除表間的參照關(guān)系
- 三、域完整性
- (一)檢查約束(CHECK約束)
- 1、創(chuàng)建表時創(chuàng)建CHECK約束
- 2、修改表時創(chuàng)建CHECK約束
- 3、刪除創(chuàng)建的CHECK約束
- (二)默認約束(DEFAULT約束)
- 1、創(chuàng)建表時創(chuàng)建DEFAULT約束
- 2、修改表時創(chuàng)建DEFAULT約束
- 2、刪除創(chuàng)建DEFAULT約束
- 結(jié)語
前言
本次內(nèi)容,我們主要掌握數(shù)據(jù)庫的數(shù)據(jù)完整性,將從三個方面主要介紹實體完整性、參照完整性和域完整性。
一、實體完整性
實體完整性是通過主鍵約束和唯一性約束等等來實現(xiàn),即要求表中有一個主鍵,其值不能為空且能唯一標識相對應(yīng)的記錄。例如員工表Employee,EmpNo列為主鍵,根據(jù)每個員工的EmpNo列可以唯一確定該員工的相應(yīng)行記錄信息,通過EmpNo列建立主鍵約束實現(xiàn)員工表Employee的實體完整性。
(一)主鍵約束(PRIMARY KEY約束)
通過T-SQL語句進行以下操作:
1、創(chuàng)建表時創(chuàng)建主鍵約束
若一個表的主鍵由單列組成,則可定義為該列的列級約束或表級約束;若主鍵由兩個或兩個以上的列組成,則必須定義為表級約束。
(1)定義列級約束
格式如下:
(2)定義表級約束
格式如下:
例1、創(chuàng)建員工表YGGZ_Employee,對員工號EmpNo列創(chuàng)建指定約束名稱的列級PRIMARY KEY約束。
sql語句:
2、修改表時創(chuàng)建主鍵約束
修改表時創(chuàng)建主鍵約束使用ALTER TABLE語句中的ADD子句。
格式如下:
3、刪除創(chuàng)建的主鍵約束
刪除表時創(chuàng)建主鍵約束使用ALTER TABLE語句中的DROP子句。
格式如下:
例2、對創(chuàng)建的員工表YGGZ_Employee,刪去部門編號的主鍵,對員工工號列創(chuàng)建PRIMARY KEY約束,且約束名稱為PK_EmpNo。
sql語句:
--修改約束和刪除約束 USE YGGZ ALTER TABLE YGGZ_Employee ADD CONSTRAINT PK_EmpNo PRIMARY KEY (EmpNo) /*修改對員工工號列創(chuàng)建PRIMARY KEY約束*/ GO ALTER TABLE YGGZ_Employee DROP CONSTRAINT PK_EmpNo /*刪除所創(chuàng)建的PRIMARY KEY約束*/
(二)唯一性約束(UNIQUE約束)
唯一性約束指定一個或多個列的組合的值具有唯一性,防止在列中輸入重復的值,為表中的一列或者多列提供實體完整性。與主鍵約束的區(qū)別是唯一性約束可以指定的列為空值,而唯一性約束的列值不允許為空值,且一個表可以創(chuàng)建多個唯一性約束,但主鍵約束只能有一個。
通過T-SQL語句進行以下操作:
1、創(chuàng)建表時創(chuàng)建唯一性約束
(1)定義列級唯一性約束
語句格式:
(2)定義表級唯一性約束
當應(yīng)用于多列時要定義表級約束。
2、修改表時創(chuàng)建唯一性約束
修改表時創(chuàng)建唯一性約束使用ALTER TABLE語句中的ADD子句。
格式如下:
3、刪除創(chuàng)建的唯一性約束
刪除所創(chuàng)建的唯一性約束使用ALTER TABLE語句中的DROP子句。
格式如下:
二、參照完整性
外鍵用于與另外一個數(shù)據(jù)表的關(guān)聯(lián),是確定另一個表的字段,例如有兩個表分別是基本表A和信息表B,其中C是表A的主鍵,而表B中也有C字段,則我們稱C就是B的外鍵,所以外鍵的作用就是來維護多個表之間數(shù)據(jù)的一致性。
FOREIGN KEY外鍵約束,通過外鍵約束可以定義表與表之間的關(guān)系,即使用主鍵約束和唯一性約束定義主表的主鍵和唯一鍵,使用外鍵約束定義從表的外鍵,即可實現(xiàn)兩個表之間的參照完整性。
(一)創(chuàng)建表時創(chuàng)建外鍵約束
1、創(chuàng)建表時定義列級外鍵約束
語句格式:
(CONSTRAINT 約束名稱) FOREIGN KEY REFERENCES <表的名稱>2、創(chuàng)建表時定義表級外鍵約束
語句格式:
(CONSTRAINT 約束名稱) FOREIGN KEY(列1,列2,列3...) REFERENCES <表的名稱> (ON DELETE (CASCADE/NO ACTION)) /*指定采用DELETE語句進行刪除操作,CASCADE表示當刪除主鍵表中某行時,外鍵表中相應(yīng)行也刪除;NO ACTION表示當刪除主鍵表中某行時,刪除語句終止*/ (ON UPDATE (CASCADE/NO ACTION)) /*指定采用UPDATE語句進行更新操作,CASCADE表示當更新主鍵表中某行時,外鍵表中相應(yīng)行也更新;NO ACTION表示當更新主鍵表中某行時,更新語句終止*/(二)修改表時創(chuàng)建外鍵約束
使用ALTER TABLE 的ADD子句修改表時創(chuàng)建外鍵約束。
語句格式:
例、根據(jù)所給表結(jié)構(gòu),在數(shù)據(jù)庫Sales中創(chuàng)建員工表Employee_0。
sql語句:
(三)刪除表間的參照關(guān)系
使用ALTER TABLE 的DROP子句刪除所創(chuàng)建的外鍵約束。
語句格式:
例、對創(chuàng)建的員工表YGGZ_Employee,刪去對EmyNo列定義的FK_EmyNo外鍵約束。
sql語句:
ALTER TABLE YGGZ_Employee DROP CONSTRAINT FK_EmyNo
三、域完整性
(一)檢查約束(CHECK約束)
CHECK約束為輸入列或整個表中的值設(shè)置條件,從而限制輸入的值,從而保證數(shù)據(jù)完整性。以下通過使用T-SQL語句。
1、創(chuàng)建表時創(chuàng)建CHECK約束
格式如下:
(CONSTRAINT 約束名稱) CHECK (邏輯表達式) /*此處邏輯表達式為檢查約束的表達式*/例、創(chuàng)建員工表Employee_0,并對性別列設(shè)置CHECK約束,要求性別只能為男或者女生。
只需在Sex列的后面加上CHECK((Sex='男') OR (Sex='女'))。
sql語句:
2、修改表時創(chuàng)建CHECK約束
使用ALTER TABLE 的ADD子句在修改表時創(chuàng)建CHECK約束。
語句格式:
例、在員工表Employee,修改年齡列設(shè)置CHECK約束,要求出生年齡在2001-01-01之前。
ALTER TABLE Employee ADD CHECK(Birthday<2001-01-01)
3、刪除創(chuàng)建的CHECK約束
使用ALTER TABLE 的DROP子句刪除所創(chuàng)建的CHECK約束。
語句格式:
(二)默認約束(DEFAULT約束)
默認約束,即當數(shù)據(jù)表某列未指定數(shù)據(jù)時,系統(tǒng)會自動設(shè)置默認值。默認值可以是表達式,可以是常量,也可以是NULL值。
1、創(chuàng)建表時創(chuàng)建DEFAULT約束
例1、對數(shù)據(jù)庫YGGZ,創(chuàng)建Employee_0表,其中對Sex列設(shè)置默認約束為男。
2、修改表時創(chuàng)建DEFAULT約束
使用ALTER TABLE 的ADD子句在修改表時創(chuàng)建DEFAULT約束。
語句格式:
例2、對數(shù)據(jù)庫YGGZ中的Employee_0表上的Sex列創(chuàng)建DEFAULT約束為男。
sql語句:
ALTER TABLE Employee_0 ADD DEFAULT '男' FOR Sex
2、刪除創(chuàng)建DEFAULT約束
使用ALTER TABLE 的DROP子句刪除所創(chuàng)建DEFAULT約束。
語句格式:
結(jié)語
以上就是本次數(shù)據(jù)庫原理與應(yīng)用的全部內(nèi)容,篇幅較長,感謝您的閱讀和支持,若有表述或代碼中有不當之處,望指出!您的指出和建議能給作者帶來很大的動力!!!
總結(jié)
以上是生活随笔為你收集整理的数据库原理与应用(SQL Server)笔记 第六章 数据完整性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT Creator应用程序开发——01
- 下一篇: 数据库原理与应用(SQL Server)