我們直接開門見山,首先我們先來確定什么是約束:數據表的約束是在表中定義的用於維護數據庫完整性的一些規則。那么約束的作用也就很明顯了,我們可以通過表中的列定義約束可以防止將錯誤的數據插入表中,也可以保持表之間數據的一致性。接下來我們來了解幾個概念:
實體完整性: 規定表的每一行在表中是惟一的實體。又稱行完整性,要求在表中不能存在完全相同的行。通過PRIMARY KEY(主鍵)、Unique(唯一約束)、Identity(標識字段)實現。
參照完整性: 又稱引用完整性。指表間的規則,作用於有關聯的兩個或兩個以上的表, 通過使用主鍵和外鍵(或唯一鍵)之間的關系, 使表中的鍵值在相關表中保持一致。通過 Foregin Key(外鍵)實現。
用戶自定義完整性:指針對某一具體關系數據庫的約束條件,它反映某一具體應用所涉及的數據必須滿足的語義要求。 通過NOT NULL(非空)、default(默認)、check(檢查)實現。
我們來看一下約束的分類:
主鍵約束:
- 主鍵約束使用primary key表示,用來保證實體的唯一性。也就是使用主鍵約束可以確保在整個表中存儲的數據不存在重復值。一般是將Id列設置為主鍵。
- 主鍵列的值能唯一標識表中的每一行,一個表只能有一個主鍵,而且主鍵約束中的列不能為空值。只有主鍵列才能被作為其他表的外鍵所創建。
- 由此可見主鍵已經有了唯一約束和非空約束的作用了。所以圖中標識出了要注意主鍵約束與唯一約束、非空約束的關系。
主鍵約束具體使用如下圖所示:
注:使用圖形化界面創建約束的方法本文不做講解了。
由圖中我們可知,創建主鍵約束有兩種途徑,一種是在創建表時同步創建主鍵約束,另外一種是表創建完成以后我們再創建主鍵約束。以學生表(Student)為例:
創建表時創建主鍵約束:
CREATE TABLE Student ( Id INT PRIMARY KEY --PRIMARY KEY就是創建主鍵約束的關鍵字 )
創建表成功后創建主鍵約束:
ALTER TABLE Student ADD CONSTRAINT PK_Student_Id PRIMAERT KEY(Id)
需要注意的是表創建完成以后創建約束屬於修改表,所以需要以ALTER TABLE 開頭表示修改表,ADD CONSTRAINT是添加約束的關鍵字,PK_Student_Id是創建約束的名字,PRIMARY KEY表示約束的種類,括號里面的Id表示在Id列上創建約束。