NOT NULL (NK)DEFAULTUNIQUE KEY (UK)PRIMARY KEY (PK)AUTO_INCREMENTFOREIGN KEY (FK)CHECK 約束(語法通過但無效果)分為單列約束與多列約束。
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
CREATE TABLE t_default(
id INT NOT NULL,
name VARCHAR(20) DEFAULT 'test'
);
INSERT INTO t_default(id) VALUES(1); -- name 自動為 'test'
CREATE TABLE t_auto(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) DEFAULT 'test'
);
要求:列為數值類型,且通常設置為主鍵。
-- 單列主鍵
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)
);
涉及父子表關系,子表字段取值範圍由父表主鍵決定。
CREATE TABLE child_table(
id INT,
parent_id INT,
CONSTRAINT fk_parent_id FOREIGN KEY(parent_id)
REFERENCES parent_table(parent_id)
);
外鍵列可為 NULL。父表關鍵字必須已存在並建立主鍵約束。