| 約束 | 關鍵字 | 說明 |
| 非空 | NOT NULL | 禁止 NULL |
| 唯一 | UNIQUE | 值唯一,允許多 NULL |
| 主鍵 | PRIMARY KEY | 非空+唯一,隱含聚簇索引 |
| 外鍵 | FOREIGN KEY | 參考完整性,支援 CASCADE/SET NULL |
| 檢查 | CHECK | MySQL 8.0.16+ 生效 |
建表、修改表、刪除表
CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(20) NOT NULL) ENGINE=InnoDB;
ALTER TABLE t ADD age TINYINT DEFAULT 0;
DROP TABLE t;
資料操作(CRUD)
INSERT INTO t (name) VALUES ('A'), ('B');
SELECT * FROM t WHERE id = 1;
UPDATE t SET name='C' WHERE id=1;
DELETE FROM t WHERE id=1;
別名與去重
SELECT id AS uid, name AS uname FROM t;
SELECT DISTINCT name FROM t;
範圍、集合、模糊查詢
WHERE age BETWEEN 18 AND 30;
WHERE status IN (1,2,3);
WHERE name LIKE '張%'; -- 以張開頭
WHERE name LIKE '%偉'; -- 以偉結尾
WHERE name LIKE '%強%'; -- 包含強
二、索引體系
| 類型 | 關鍵字 | 特點 |
| 主鍵索引 | PRIMARY KEY | 唯一、非空、聚簇索引 |
| 唯一索引 | UNIQUE | 值唯一,允許 NULL |
| 普通索引 | INDEX / KEY | 加速查詢,可重複、可 NULL |
| 全文索引 | FULLTEXT | 大文本搜尋,MySQL 5.6+ InnoDB 支援 |
三、存儲引擎對比
| 引擎 | 事務 | 鎖粒度 | 外鍵 | 全文索引 | 適用場景 |
| InnoDB | ✓ | 行鎖 | ✓ | 5.6+ ✓ | 核心業務、高併發、需事務 |
| MyISAM | ✗ | 表鎖 | ✗ | ✓ | 唯讀、日誌、非關鍵數據 |
| MEMORY | ✗ | 表鎖 | ✗ | ✗ | 臨時緩存、極速查詢 |
SHOW ENGINES; -- 查看支援引擎
四、字元集與定序
- 層級:Server → Database → Table → Column。
- 建庫建表顯式指定:
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci。
- 配置檔鎖定:
character-set-server=utf8mb4、collation-server=utf8mb4_general_ci。
- 連線設定:
SET NAMES utf8mb4 或驅動參數 characterEncoding=utf8mb4。
- Windows 命令列顯示中文:
SET NAMES gbk 或終端機 chcp 65001。
copyright ©
萬盛學電腦網 all rights reserved