基礎 DDL
-- 創建
CREATE TABLE t_dept (
deptno INT,
dname VARCHAR(20),
loc VARCHAR(20)
);
-- 查看結構
DESC t_dept; -- 簡略
SHOW CREATE TABLE t_dept\G; -- 完整 DDL
-- 刪除
DROP TABLE t_dept;
結構修改(ALTER TABLE)
| 操作 | 語法 | 示例 |
| 改表名 | RENAME TO new_name | ALTER TABLE t_old RENAME TO t_new; |
| 加欄位(尾部) | ADD col_def | ALTER TABLE t ADD age INT; |
| 加欄位(首部) | ADD col_def FIRST | ALTER TABLE t ADD id INT FIRST; |
| 加欄位(指定後) | ADD col_def AFTER col | ALTER TABLE t ADD email VARCHAR(50) AFTER name; |
| 刪欄位 | DROP col | ALTER TABLE t DROP age; |
| 改類型 | MODIFY col new_type | ALTER TABLE t MODIFY name VARCHAR(50); |
| 改名 | CHANGE old_col new_col type | ALTER TABLE t CHANGE name full_name VARCHAR(50); |
| 改名+改類型 | CHANGE old_col new_col new_type | ALTER TABLE t CHANGE age birth DATE; |
| 調順序 | MODIFY col type FIRST|AFTER col2 | ALTER TABLE t MODIFY email VARCHAR(50) FIRST; |
口訣:改類型/調順序用 MODIFY,改名(含改類型)用 CHANGE。
六大完整性約束
| 約束 | 關鍵字 | 建表語法 | 說明 |
| 非空 | NOT NULL | col INT NOT NULL | 值不可為 NULL |
| 預設值 | DEFAULT | col INT DEFAULT 0 | 插入時省略則用預設 |
| 唯一 | UNIQUE [KEY] | col INT UNIQUE 或 CONSTRAINT uk_col UNIQUE(col) | 值唯一,允許多 NULL |
| 主鍵 | PRIMARY KEY | col INT PRIMARY KEY 或 CONSTRAINT pk_col PRIMARY KEY(col) | 唯一+非空,單表僅一個 |
| 自增 | AUTO_INCREMENT | id INT PRIMARY KEY AUTO_INCREMENT | 整數類型,常配合 PK,僅一列 |
| 外鍵 | FOREIGN KEY | CONSTRAINT fk_dept FOREIGN KEY(deptno) REFERENCES t_dept(deptno) | 引用主表 PK,可為 NULL |
多欄位主鍵與約束命名
CREATE TABLE t_score (
student_id INT,
course_id INT,
score DECIMAL(5,2),
CONSTRAINT pk_score PRIMARY KEY (student_id, course_id),
CONSTRAINT fk_stu FOREIGN KEY (student_id) REFERENCES t_student(id),
CONSTRAINT fk_cou FOREIGN KEY (course_id) REFERENCES t_course(id)
);
命名規範建議
- 表:
t_業務名(如 t_order)
- 索引:
idx_表_欄位、uk_表_欄位
- 約束:
pk_表_欄位、fk_表_引用表
- 視圖:
v_業務名、view_業務名
- 觸發器:
trg_表_事件_時機