1. 程式人生 > 資料庫 >學習筆記|MySQL中關於約束型別,主鍵 ,唯一鍵,外來鍵知識

學習筆記|MySQL中關於約束型別,主鍵 ,唯一鍵,外來鍵知識

六種常見約束

  1. not null:非空約束,用於保證該欄位的值不能為空
  2. default:預設約束,用於保證該欄位的值不能為空
  3. primary key:主鍵約束,用於保證該欄位的值具有唯一性,且非空
  4. unique:唯一約束,用於保證該欄位的值具有唯一性,可以為空
  5. check:檢查約束,用於對插入的資料按照設定的邏輯進行檢查
  6. 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 多個
允許組合 允許 允許

外來鍵約束

特點:

  1. 要求在從表設定外來鍵關係
  2. 從表的外來鍵列的型別和主表的關聯列一致或相容,名稱無要求(類似於java中的父系和子系)
  3. 主表的關聯列必須是一個key(一般是主鍵或唯一鍵)
  4. 插入資料時 先插入主表,再插入從表
  5. 刪除資料時,先刪除從表,再刪除主表

語法:

ALTER TABLE 表名 ADD 【CONSTRAINT 外來鍵名字】 FOREIGN KEY 外來鍵欄位 REFERENCES 主表(關聯列);

外來鍵約束不支援列級約束

主鍵約束和外來鍵約束的對比

主鍵約束 外來鍵約束
說明 唯一性,不能重複,不允許為空 外來鍵可以重複以及允許為空,表的外來鍵是另一表的主鍵
功能 保證欄位的唯一性 關聯資料,與其他表建立聯絡
不同點 主鍵只能由一個 允許存在多個外來鍵