資料庫設計時選擇合適的整數類型,能節省儲存空間、提升查詢效能。MySQL 提供五種整數類型,各佔用 1~8 位元組,支援有符號與無符號兩種模式。
| 類型 | 位元組 | 有符號範圍 | 無符號範圍 |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32,768 ~ 32,767 | 0 ~ 65,535 |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
| INT / INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
| BIGINT | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18,446,744,073,709,551,615 |
INT(11) 僅影響顯示寬度,不限制儲存範圍。| 類型 | 範圍 / 特性 |
|---|---|
| FLOAT | -3.40E+38 ~ 3.40E+38(單精度) |
| DOUBLE | -1.79E+308 ~ 1.79E+308(雙精度) |
| DECIMAL(M,D) | 精確定點數,M 總位數,D 小數位 |
| DATE | 1000-01-01 ~ 9999-12-31 |
| DATETIME | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
| TIMESTAMP | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
| TIME | -838:59:59 ~ 838:59:59 |
| YEAR | 1901 ~ 2155(4 位)或 1970 ~ 2069(2 位) |
| CHAR/VARCHAR | M 範圍 1~255(5.0.3+ VARCHAR 至 65,535) |
| TEXT/BLOB | TINY(255) / 64KB / 16MB / 4GB 四級 |
| ENUM | 最多 65,535 個枚舉值 |
| SET | 最多 64 個成員 |
TINYINT UNSIGNEDINT UNSIGNED 或 BIGINT UNSIGNEDDECIMAL(10,2)BIGINT 預留未來擴充合理選型 = 省空間 + 快索引 + 少 Bug,請根據業務實際上限預留 20%~50% 餘量。