MySQL保證資料完整性

來源:互聯網
上載者:User

資料完整性概述

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張表代表學生,在刪除班級時必須刪除參考關聯性或將學生全部開除

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.