欄位型別決定儲存空間、索引效能、查詢精度與應用層型別映射。MySQL 提供數值、日期時間、字串三大類型,本文為您梳理完整參考表與選型指南。
| 類型 | 儲存 | 有號範圍 | 無號範圍 | 適用場景 |
|---|---|---|---|---|
| TINYINT | 1B | -128 ~ 127 | 0 ~ 255 | 布爾旗標、極小計數、枚舉值 |
| SMALLINT | 2B | -32,768 ~ 32,767 | 0 ~ 65,535 | 小範圍計數、年齡、狀態碼 |
| MEDIUMINT | 3B | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | 中等計數、RGB顏色值 |
| INT / INTEGER | 4B | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 通用主鍵、計數器、外鍵 |
| BIGINT | 8B | -9.22e18 ~ 9.22e18 | 0 ~ 1.84e19 | 巨大計數、時間戳毫秒、分散式ID |
| FLOAT(M,D) | 4B | ±1.17e-38 ~ ±3.40e38 | - | 單精度科學計算、不需精確金額 |
| DOUBLE(M,D) | 8B | ±2.22e-308 ~ ±1.79e308 | - | 雙精度科學計算、座標經緯度 |
| DECIMAL(M,D) / NUMERIC | M+2B | 精確定點數,最大65位數字 | - | 金額、價格、比率、任何需精確計算 |
| BIT(M) | ~M/8B | 位域 | - | 位元組標誌、權限掩碼 |
UNSIGNED:移除負號,正數範圍翻倍。ZEROFILL:左補 0 至顯示寬度 M,隱含 UNSIGNED。M:顯示寬度(不影響儲存範圍)。D:小數位數(浮點/定點)。MySQL 算術運算以有號 BIGINT 或 DOUBLE 進行。9223372036854775807 * 2 會溢位產生錯誤結果。涉及巨大整數運算請改用 DECIMAL 或應用層處理。
| 類型 | 儲存 | 範圍 | 顯示格式 | 特性 |
|---|---|---|---|---|
| DATE | 3B | 1000-01-01 ~ 9999-12-31 | YYYY-MM-DD | 純日期,生日、生效日 |
| DATETIME | 8B | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 無時區,應用層自管時區 |
| TIMESTAMP | 4B | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC | YYYY-MM-DD HH:MM:SS | 帶時區,自動轉換,首欄預設 CURRENT_TIMESTAMP |
| TIME | 3B | -838:59:59 ~ 838:59:59 | HH:MM:SS | 時間間隔、每日排程 |
| YEAR(2|4) | 1B | 1901~2155 (4位) / 1970~2069 (2位) | YYYY | 年份專用 |
| 類型 | 最大長度 | 儲存開銷 | 特性 |
|---|---|---|---|
| CHAR(M) | 255 字符 | M 字節 (固定) | 右補空格,讀取時去尾空格,適合定長代碼(MD5、UUID、國籍代碼) |
| VARCHAR(M) | 65,535 字符 (共享 64KB 行上限) | L+1/2 字節 (可變) | 實際長度+1/2字節長度前綴,適合變長文本(名稱、描述、URL) |
| TINYTEXT | 255 字符 | L+1 字節 | 不支援 DEFAULT,不支援索引前綴長度 |
| TEXT | 65,535 字符 | L+2 字節 | 同 TINYTEXT |
| MEDIUMTEXT | 16,777,215 字符 | L+3 字節 | 大文本、文章內容 |
| LONGTEXT | 4,294,967,295 字符 | L+4 字節 | 超大文本、日誌、JSON 文檔 |
| ENUM('v1','v2',...) | 65,535 個成員 | 1-2 字節 | 單選枚舉,內部存數字索引,極省空間 |
| SET('v1','v2',...) | 64 個成員 | 1-8 字節 | 多選集合,位掩碼存儲 |
| BLOB 系列 (TINY/BLOB/MEDIUM/LONG) | 對應 TEXT 長度 | 對應 TEXT 開銷 | 二進制數據(圖片、檔案、加密串),無字元集概念 |
utf8mb4 + utf8mb4_unicode_ci。型別選擇無小事:用最小滿足業務的型別,是索引瘦身、I/O 減少、快取命中率提升的源頭優化。建議團隊建立「型別選型規範表」,Code Review 時必查,讓好習慣成為肌肉記憶。