| 型別 | 位元組 | 範圍 | 適用場景 |
|---|---|---|---|
| TINYINT | 1 | -128~127 / 0~255 | 布林、狀態碼、小計數 |
| SMALLINT | 2 | -32k~32k / 0~65k | 中等計數、年齡 |
| MEDIUMINT | 3 | -8M~8M / 0~16M | 較大計數、節省空間 |
| INT | 4 | -21億~21億 / 0~42億 | 通用主鍵、外鍵、計數 |
| BIGINT | 8 | ±9×10¹⁸ | 巨大主鍵、時間戳毫秒、ID 生成器 |
| DECIMAL(p,s) | 變長 | 精確十進位 | 金額、匯率、精密測量 |
| FLOAT | 4 | ~7 位有效數字 | 科學計算、非精確容差 |
| DOUBLE | 8 | ~15 位有效數字 | 高精度科學計算 |
| 型別 | 最大長度 | 儲存方式 | 適用場景 |
|---|---|---|---|
| CHAR(n) | 255 | 固定長,右填空格 | 定長代碼(ISO 國家碼、MD5 雜湊) |
| VARCHAR(n) | 65,535 | 可變長,1-2 位元組長度前綴 | 通用變長字串、姓名、標題 |
| TEXT | 64KB | 溢位頁儲存 | 長文本、描述、日誌 |
| MEDIUMTEXT | 16MB | 溢位頁 | 文章內容、JSON 文檔 |
| LONGTEXT | 4GB | 溢位頁 | 巨大文檔、完整日誌 |
BIT(1) 替代 TINYINT(1)NOT NULL:優化器可跳過 NULL 檢查、索引統計更準確DEFAULT:減少應用層判斷、避免隱式 NULL 插入INT(11) 以為限制長度 —— 顯示寬度無實際約束FLOAT/DOUBLE 導致精度丟失 —— 必須 DECIMAL(19,4)VARCHAR(255) 濫用 —— 依實際最大長度設定,利於索引與記憶體NULL 可變長欄位產生碎片 —— 定期 OPTIMIZE TABLE 或改固定長