首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 學習筆記(二):表約束 NOT NULL、DEFAULT、自增、唯一、主鍵、外鍵詳解

     編輯:MySQL 綜合教學

MySQL 學習筆記(二):表約束 NOT NULL、DEFAULT、自增、唯一、主鍵、外鍵詳解

MySQL 支持的完整性約束

  • NOT NULL (NK)
  • DEFAULT
  • UNIQUE KEY (UK)
  • PRIMARY KEY (PK)
  • AUTO_INCREMENT
  • FOREIGN KEY (FK)
  • 不支持 CHECK 約束(語法通過但無效果)

分為單列約束與多列約束。

1. NOT NULL

CREATE TABLE t_notnull(
    id INT NOT NULL,
    name VARCHAR(20)
);
INSERT INTO t_notnull(name) VALUES('test'); -- id 自動為 0
ALTER TABLE t_notnull MODIFY id INT; -- 移除 NOT NULL
INSERT INTO t_notnull(name) VALUES('test2'); -- id 為 NULL

2. DEFAULT

CREATE TABLE t_default(
    id INT NOT NULL,
    name VARCHAR(20) DEFAULT 'test'
);
INSERT INTO t_default(id) VALUES(1); -- name 自動為 'test'

3. AUTO_INCREMENT

CREATE TABLE t_auto(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) DEFAULT 'test'
);

要求:列為數值類型,且通常設置為主鍵。

4. UNIQUE KEY (UK)

-- 單列主鍵
CREATE TABLE t_pk(
    id INT PRIMARY KEY,
    name VARCHAR(20)
);

-- 多列主鍵(聯合主鍵)
CREATE TABLE t_pk2(
    col1 INT,
    col2 INT,
    CONSTRAINT pk_col1_col2 PRIMARY KEY(col1, col2)
);

6. FOREIGN KEY (FK)

涉及父子表關系,子表字段取值範圍由父表主鍵決定。

CREATE TABLE child_table(
    id INT,
    parent_id INT,
    CONSTRAINT fk_parent_id FOREIGN KEY(parent_id) 
    REFERENCES parent_table(parent_id)
);

外鍵列可為 NULL。父表關鍵字必須已存在並建立主鍵約束。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved