系統梳理 MySQL 核心基礎知識:資料表操作 (CRUD、約束、索引)、索引分類與優化、儲存引擎選型、字符集配置、常用查詢技巧,構建完整知識地圖,適合面試複習與日常查閱。
ADD、DROP、MODIFY、CHANGERENAME TOADD/DROP PRIMARY KEY|UNIQUE|INDEX|FOREIGN KEY|CHECKDROP TABLE [IF EXISTS] tbl_name:刪除結構與資料,不可恢復TRUNCATE TABLE tbl_name:保留結構,清空資料,重置自增 ID,速度快、不觸發 Trigger| 操作 | 語法要點 | 範例 |
|---|---|---|
| 單條插入 | 指定欄位順序,VALUES 對應 | INSERT INTO user(name,age) VALUES('Tom',25) |
| 批次插入 | 多組 VALUES,單條語句 | INSERT INTO user(name,age) VALUES('A',1),('B',2),('C',3) |
| 更新 | 必帶 WHERE,否則全表更新 | UPDATE user SET age=26 WHERE name='Tom' |
| 刪除 | 必帶 WHERE,大量刪除考慮分批或 TRUNCATE | DELETE FROM user WHERE age<18 |

AS 或空格,欄位/表別名簡化輸出DISTINCT 作用於全部選取欄位組合BETWEEN ... AND ... (含邊界)IN (val1, val2...)、NOT INLIKE,% 多字元、_ 單字元,ESCAPE 轉義ORDER BY col [ASC|DESC],可多欄位LIMIT offset, count (offset 從 0 起)




| 類型 | 關鍵字 | 特性 | 適用場景 |
|---|---|---|---|
| 主鍵索引 | PRIMARY KEY | 唯一、非空、聚簇索引、一表僅一個 | 主鍵欄位 |
| 唯一索引 | UNIQUE KEY | 值唯一、允許 NULL、輔助索引 | Email、手機號、身份證 |
| 普通索引 | INDEX / KEY | 允許重複、允許 NULL、輔助索引 | 查詢/排序/分組高頻欄位 |
| 全文索引 | FULLTEXT | 支援自然語言/布爾模式全文搜尋 | 文章內容、日誌、商品描述 |

INDEX idx_uid_email (uid, email) 可覆蓋 SELECT email FROM user WHERE uid=100| 引擎 | 事務 | 鎖粒度 | 外鍵 | 全文索引 | 適用場景 |
|---|---|---|---|---|---|
| InnoDB | ✓ (ACID) | 行鎖 | ✓ | 5.6+ ✓ | 核心業務、高併發、需事務 |
| MyISAM | ✗ | 表鎖 | ✗ | ✓ | 唯讀/讀多寫少、全文搜尋(舊版) |
| MEMORY | ✗ | 表鎖 | ✗ | ✗ | 臨時表、快取、查找表、資料可丟失 |

SHOW ENGINES;
-- 或
SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES;

datadir (通常 /var/lib/mysql 或安裝目錄 data)ibdata1 + 獨立表空間 tbl_name.ibd (開啟 innodb_file_per_table).frm 結構、.MYD 資料、.MYI 索引伺服器 character-set-server < 資料庫 DEFAULT CHARACTER SET < 資料表 DEFAULT CHARACTER SET < 欄位 CHARACTER SET
| 字符集 | 別名 | 中文支援 | Emoji 支援 | Bytes/字符 |
|---|---|---|---|---|
| utf8mb4 | UTF-8 完整版 | ✓ | ✓ | 1-4 |
| utf8 | utf8mb3 | ✓ | ✗ (僅 BMP) | 1-3 |
| gbk | 中文擴展 | ✓ | ✗ | 1-2 |
| latin1 | ISO-8859-1 | ✗ | ✗ | 1 |
-- my.cnf / my.ini [mysqld] 區段
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
注意:Windows 客戶端連線若出現中文亂碼,執行 SET NAMES gbk 或確認客戶端編碼設定一致。

FORCE INDEX(idx_name)、USE INDEX、IGNORE INDEXtype (system/const/eq_ref/ref/range/index/ALL)、key、rows、Extra (Using index/Using where/Using temporary/Using filesort)slow_query_log=1、long_query_time=1、log_queries_not_using_indexes=1mysqldump -u root -p db > dump.sql、mysql -u root -p db < dump.sqlpt-online-schema-change / gh-ost這份知識地圖涵蓋 MySQL 開發與運維 80% 的高頻場景,建議收藏備查,定期複習鞏固核心功力。