本文整理自《MySQL必知必會》關於「創建和操作表」章節,系統梳理 CREATE TABLE、ALTER TABLE、DROP TABLE、RENAME TABLE 的語法、約束條件(NULL、主鍵、自增、預設值)與實戰陷阱,附完整 SQL 範例與執行截圖。
CREATE TABLE student (
id INT(10) NOT NULL,
name VARCHAR(10) NOT NULL,
score INT(10) NULL
);

CREATE TABLE student4 (
id INT(10) NOT NULL AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
score INT(10) NULL,
PRIMARY KEY (id)
);
錯誤示範:若只加 AUTO_INCREMENT 不設主鍵,MySQL 報錯:

CREATE TABLE IF NOT EXISTS student (...);
表名存在時直接跳過,不檢查結構是否相同。
| 關鍵字 | 作用 | 注意事項 |
|---|---|---|
| NOT NULL | 插入時必須提供值 | 預設為 NULL(可省略) |
| NULL | 允許不提供值 | 別與空字串 '' 混淆 |
| PRIMARY KEY | 唯一標識每行 | 值不可重複、不可為 NULL;可單欄或複合欄位 |
| AUTO_INCREMENT | 自動遞增 | 需為主鍵;插入可省略該欄,或指定唯一值後續從最大值遞增 |
| DEFAULT | 預設值 | 插入時省略該欄自動填充 |
NULL = 無值(未知)'' = 空字串(已知且為空)NOT NULL 欄位可插入 '',但不可插入 NULL-- 單欄主鍵:值唯一
-- 複合主鍵:組合唯一
-- 主鍵欄位隱含 NOT NULL
重複主鍵插入報錯:

INSERT INTO student4 (name, score) VALUES ('Tom', 90); -- id 自動給 1
INSERT INTO student4 (id, name, score) VALUES (5, 'Jerry', 85); -- 指定 id=5
INSERT INTO student4 (name, score) VALUES ('Kate', 88); -- id 自動給 6(最大值+1)

CREATE TABLE student5 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
sex VARCHAR(10) NOT NULL DEFAULT 'male',
score INT NULL
);

原則:設計階段規劃好結構,上線後盡量少改動。
ALTER TABLE human_information ADD tel VARCHAR(10);

ALTER TABLE human_information DROP COLUMN tel;

ALTER TABLE customers ADD PRIMARY KEY (cust_id);

ALTER TABLE orders
ADD CONSTRAINT fk_orders_customers
FOREIGN KEY (cust_id) REFERENCES customers(cust_id);

| 指令 | 效果 |
|---|---|
DELETE FROM student WHERE name='z'; | 刪除符合條件的行 |
DELETE FROM student; | 刪除所有資料,表結構保留 |
TRUNCATE TABLE student; | 快速清空所有資料,表結構保留(不記錄日誌、不可回滾) |
DROP TABLE student; | 徹底刪除表(結構+資料+索引+權限) |
警告:執行 DROP TABLE 前務必完整備份。

RENAME TABLE student TO student_rename;

CREATE TABLE student (
id INT(10) NOT NULL AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
sex VARCHAR(10) NOT NULL DEFAULT 'male',
score INT(10) NULL,
PRIMARY KEY (id)
);
| 操作 | SQL 範例 |
|---|---|
| 新增欄位 | ALTER TABLE student ADD mathScore INT(10); |
| 刪除欄位 | ALTER TABLE student DROP COLUMN mathScore; |
| 加主鍵 | ALTER TABLE student ADD PRIMARY KEY (id); |
| 加外鍵 | ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (id) REFERENCES customers (id); |
| 刪除表 | DROP TABLE student; |
| 重命名 | RENAME TABLE student TO new_student; |
掌握上述 DDL 操作,即可靈活應對開發初期的結構調整與上線後的演進需求,建議在測試環境充分驗證後再套用至生產庫。