-- 新增欄位
ALTER TABLE tbl ADD col_name datatype;
-- 修改欄位
ALTER TABLE tbl CHANGE old_name new_name datatype;
ALTER TABLE tbl MODIFY col_name new_datatype;
-- 刪除欄位
ALTER TABLE tbl DROP COLUMN col_name;
-- 查看表結構
DESC tbl; -- 或 SHOW COLUMNS FROM tbl;
-- 普通索引
ALTER TABLE employee ADD INDEX emp_name (name);
-- 主鍵
ALTER TABLE employee ADD PRIMARY KEY (id);
-- 唯一索引
ALTER TABLE employee ADD UNIQUE emp_card (card_number);
-- 前綴索引(BLOB/TEXT/長 VARCHAR 必須)
CREATE TABLE test (blob_col BLOB, INDEX idx_prefix (blob_col(10)));
-- 刪除索引
ALTER TABLE employee DROP INDEX emp_name;
SHOW INDEX FROM employee;
-- 或
SHOW KEYS FROM employee;
關鍵欄位:Key_name、Seq_in_index、Column_name、Cardinality(基數)、Sub_part(前綴長度)、Index_type(BTREE/FULLTEXT)。
CHAR/VARCHAR/TEXT。ALTER TABLE articles ADD FULLTEXT idx_content (content);SELECT * FROM articles WHERE MATCH(content) AGAINST('keyword');索引 INDEX name (last_name, first_name) 等同於排序陣列:
| 查詢條件 | 使用索引 | 說明 |
|---|---|---|
WHERE last_name='W' | ✅ | 最左欄位 |
WHERE last_name='W' AND first_name='M' | ✅ | 最左兩欄 |
WHERE first_name='M' | ❌ | 非最左 |
WHERE last_name='W' OR first_name='M' | ❌ | OR 導致全掃 |
WHERE 等值 > WHERE 範圍 > ORDER BY > GROUP BY。SELECT a,b FROM t WHERE c=1 配合 INDEX(c,a,b) 避免回表。ANALYZE TABLE 更新統計資訊,確保優化器決策準確。