TINYINT 佔用 1 字節(8 位),是 MySQL 最小的整數類型。常用於布爾標誌、狀態碼、小範圍計數。
| 類型 | 有符號範圍 | 無符號範圍 |
|---|---|---|
| TINYINT | -128 ~ 127 | 0 ~ 255 |
TINYINT(3) 中的 3 僅影響顯示寬度(配合 ZEROFILL 左填 0),不限制存儲範圍。
CREATE TABLE t (c TINYINT(3) ZEROFILL);
INSERT INTO t VALUES (5), (100);
SELECT * FROM t; -- 顯示 005, 100
BOOL/BOOLEAN 別名為 TINYINT(1)。非 0 即 true,但存儲仍佔 1 字節。TINYINT AUTO_INCREMENT 最大 127/255,極易耗盡,禁用於主鍵。TINYINT UNSIGNED 範圍 0-255,減法運算可能下溢報錯(嚴格模式)。INT 列 JOIN 時隱式轉換可能導致索引失效,建議統一類型。TINYINT UNSIGNED NOT NULL DEFAULT 0。TINYINT UNSIGNED。ZEROFILL(隱含 UNSIGNED),應用層格式化更靈活。TINYINT 省空間但範圍極小,顯示寬度不限制值域。正確選型:標誌位/微小計數用 TINYINT,其餘場景升級到 INT/BIGINT,避免溢出與隱式轉換性能損失。