NOT NULL 非空值約束
NOT NULL 約束用來確保欄位不能儲存 NULL 值。預設情況下,欄位是允許 NULL 的。
建立資料表時設定
CREATE TABLE customers (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
email VARCHAR(100), -- 允許 NULL
phone VARCHAR(20) NOT NULL
);
在這個範例中,id、name、phone 是必填欄位,而 email 可以為空。
新增資料時的影響
設定 NOT NULL 後,新增資料時必須提供該欄位的值:
-- 成功
INSERT INTO customers (id, name, phone) VALUES (1, '王小明', '0912345678');
-- 失敗:name 不能為 NULL
INSERT INTO customers (id, name, phone) VALUES (2, NULL, '0923456789');
對現有資料表新增 NOT NULL
使用 ALTER TABLE 修改現有欄位:
-- MySQL
ALTER TABLE customers MODIFY email VARCHAR(100) NOT NULL;
-- SQL Server
ALTER TABLE customers ALTER COLUMN email VARCHAR(100) NOT NULL;
-- PostgreSQL
ALTER TABLE customers ALTER COLUMN email SET NOT NULL;
在新增 NOT NULL 約束之前,必須先確保該欄位沒有 NULL 值,否則會失敗。