學習筆記|MySQL中關於約束型別,主鍵 ,唯一鍵,外來鍵知識
阿新 • • 發佈:2020-02-20
六種常見約束
- not null:非空約束,用於保證該欄位的值不能為空
- default:預設約束,用於保證該欄位的值不能為空
- primary key:主鍵約束,用於保證該欄位的值具有唯一性,且非空
- unique:唯一約束,用於保證該欄位的值具有唯一性,可以為空
- check:檢查約束,用於對插入的資料按照設定的邏輯進行檢查
- foreign key:外來鍵約束,用於限制兩個表的關係,用於保證該欄位的值必須來主表關聯列的值
DROP TABLE IF EXISTS test1 ; CREATE TABLE test1 ( id INT PRIMARY KEY,#主鍵 id_name VARCHAR (20) NOT NULL,#非空約束 seat INT UNIQUE,#唯一 gender CHAR(1) CHECK (gender = '男' OR gender = '女'),#檢查約束 class VARCHAR (220) DEFAULT '高三一班' #預設約束 ) ;
*約束是可以疊加的
主鍵和唯一鍵的比較
primary key | unique | |
---|---|---|
值唯一性 | 唯一 | 唯一 |
是否為空 | 非空 | 可以為空 |
表中允許個數 | 1 | 多個 |
允許組合 | 允許 | 允許 |
外來鍵約束
特點:
- 要求在從表設定外來鍵關係
- 從表的外來鍵列的型別和主表的關聯列一致或相容,名稱無要求(類似於java中的父系和子系)
- 主表的關聯列必須是一個key(一般是主鍵或唯一鍵)
- 插入資料時 先插入主表,再插入從表
- 刪除資料時,先刪除從表,再刪除主表
語法:
ALTER TABLE 表名 ADD 【CONSTRAINT 外來鍵名字】 FOREIGN KEY 外來鍵欄位 REFERENCES 主表(關聯列);
外來鍵約束不支援列級約束
主鍵約束和外來鍵約束的對比
主鍵約束 | 外來鍵約束 | |
---|---|---|
說明 | 唯一性,不能重複,不允許為空 | 外來鍵可以重複以及允許為空,表的外來鍵是另一表的主鍵 |
功能 | 保證欄位的唯一性 | 關聯資料,與其他表建立聯絡 |
不同點 | 主鍵只能由一個 | 允許存在多個外來鍵 |