主鍵約束:
主鍵 (PRIMARY KEY)是用于約束表中的一行,作為這一行的標識符,在一張表中通過主鍵就能準確定位到一行,因此主鍵十分重要。行中的主鍵不能有重復且不能為空。
比如我要創建一個
該表ts_name為主鍵約束,暫且不管Default。
代碼:
CREATE TABLE test(ts_name CHAR(20) PRIMARY KEY,ts_num INT(10));
默認值約束:
默認值約束 (DEFAULT) 規定,當有 DEFAULT 約束的列,插入數據為空時,將使用默認值。
該圖中ts_rum的Default為10,我們并沒有插入數據,為什么Default的值會是10呢
CREATE TABLE test(ts_name CHAR(20) PRIMARY KEY,ts_num INT(10) DEFAULT(10));
唯一約束:
當 INSERT 語句新插入的數據和已有數據重復的時候,如果有 UNIQUE約束,則 INSERT 失敗,比如:
我把test2表的te_id設置為唯一約束,那么
上圖插入數據是正確的
上圖插入數據會報錯,因為Bob的te_id跟Tom的te_id一樣了,這就是唯一約束的作用
下面代碼是建表是的唯一約束示例:
CREATE TABLE test2(te_name CHAR(20) PRIMARY KEY,te_id INT,UNIQUE(te_id));
外鍵約束:
外鍵 (FOREIGN KEY) 既能確保數據完整性,也能表現表之間的關系。
一個表可以有多個外鍵,每個外鍵必須 REFERENCES (參考) 另一個表的主鍵,被外鍵約束的列,取值必須在它參考的列中有對應值。
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
示例:
實現外鍵約束的代碼:
CONSTRAINT emp_fk FOREIGN KEY(in_dpt) REFERENCES department(dpt_name)
上圖出現錯誤,因為設置了外鍵約束但是在department表中dpt_name沒有'dpt3'這個數據,我們要先插入這行數據
這樣在department表的dpt_name中有數據'dpt3'
那么再打一遍剛才會報錯的代碼
這樣就沒有問題了,這就是外鍵約束的作用。
非空約束:
非空約束 (NOT NULL),聽名字就能理解,被非空約束的列,在插入值時必須非空。在MySQL中違反非空約束,不會報錯,只會有警告,5.6 版本以上的 MySQL 會報錯,禁止插入不符合非空約束的數據。
salary INT(10) NOT NULL,
表示salary不能為空