SQL約束

要學習SQL約束,首先我們需要建立數據庫,之前我們已經學習了數據庫的創建,因此我們這裏使用一種新的方法,下載github中的數據文件到本地文件夾並加載文件中數據:

//下載
git clone https://github.com/HYQ/SQL3

//登錄MySQL加載文件中數據
source /home/SQL3/MySQL-03-01.sql;

主鍵約束
主鍵用於約束表中的一行,作爲這一行唯一的標識符,一張表中通過主鍵就能準備定位到一行,因此主鍵非常重要,主鍵不能重複且不能爲空,主鍵的定義方法有幾種:

//在表中加入
id INT(10) PRIMARY KEY,

//表內最後加入
CONSTRAINT dpt_pk PRIMARY KEY(dpt_name)

//特殊主鍵-複合主鍵
CONSTRAINT pro_pk PRIMARY KEY(pro_name,pro_name)

默認值約束
當有DEFAULT約束的列,插入數據爲空時,使用默認值。默認值常用於一些可有可無的字段,比如用戶的個性簽名,若用戶沒有設置,系統給他設定一個默認的文本。DEFAULT約束只在插入數據時體現出來。

people_num INT(10) DEFAULT '10',
//people_num默認值爲10

唯一約束
規定一張表中指定的一列的值必須不能有重複值,約束如下:

UNIQUE(phone),
//這裏UNIQUE約束phone值唯一

外鍵約束
外鍵既能確保數據完整性,也能表現表之間的關係。外鍵將確保這個外鍵指向的記錄存在,不能單獨刪除該記錄,也不能指向一個不存在的用戶。一個表可以有多個外鍵每個外鍵必須REFERENCES另一個表的主鍵:

CONSTRAINT emp_fk FOREIGN KEY(in_dpt) REFERENCES department(dpt_name);

被外鍵約束的列,取值必須在它參考的列中有對應值。INSERT時,如果被外鍵約束的值沒有在參考列中有對應,比如如下命令,參考列(department表的dpt_name)中沒有dpt3,則INSERT失敗:

INSERT INTO employee VALUES(02,'Jack',30,3500,114114,'dpt3');

非空約束
被非空約束的列,在插入值時必須非空,有非空約束時如下:

salary INT(10) NOT NULL
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章