資料完整性概述
1、實體完整性
實體就是顯示世界中的一個對象,RDBMS中每一行就代表一個實體。所謂實體完整性就是每一個實體都能被區別。所以,實現實體完整性一般通過主鍵約束、唯一約束或表示列屬性
2、值域完整性
主要指列的輸入要有效,可通過限制列的資料類型、格式或值的範圍來實現
3、參考完整性
主要是表與表的關係,可通過外鍵實現
4、使用者自訂完整性
不是很瞭解,可通過觸發器、預存程序實現,以後學了Oracle後會進一步瞭解
資料完整性的實現
1、建立非空約束(值域完整性)
not null關鍵字,指定列不能輸入null值
例子:
name varchar(50) not null;
2、設定主鍵約束(實體完整性)
primary key關鍵字,保證指定列的資料不可重複,不可為空白。一張表只能定義一個主鍵
例子:
id int(10) primary key not null;
3、設定唯一約束(值域完整性,因為是對列的限制)
unique關鍵字,因為有時一張表需要多個列唯一,而一張表又只能由一個主鍵,所以可以設定唯一約束來實現,一張表可以設定多個唯一約束
例子:
phoneNo varchar(20) unique;
4、指定預設值(值域完整性)
default關鍵字,一條資料產生時如果沒有輸入一個列的值,那麼我們可以指定一個預設值
例子:
phoneNo varchar(20) default'10086';
5、設定檢查約束(值域完整性)
check關鍵字,在插入新行或者更改已有行時才起作用,作用是阻止不滿足條件的值進入該列,對null值無效,因為插入null就相當於沒有插入。一個列可有多個check
例子:
age int check(age between 10 and 20);
由於mysql不支援,所以現在不是很清楚,以後填補下這個空白
6、使用自動編號列
auto_increment關鍵字,可以在添加一條記錄時,自動為該行添加數值,而且是自動成長的。一般與主鍵一起用
例子:
id int primary key auto_increment not null;
7、建立外鍵約束
文法:
fk_name varchar(50) references 參考資料表表名(列名)
注意:參考資料表的列名必須是主鍵,且在刪除參考資料表時必須刪除參考關聯性或者刪除當前表
比如:1張表代表班級,另1張表代表學生,在刪除班級時必須刪除參考關聯性或將學生全部開除