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 |
無符號:8 位全 0 = 0,全 1 = 255(2⁸-1)。
有符號:最高位為符號位(0 正、1 負),剩 7 位表示數值。最小值 1000 0000₂ = -128(補碼表示),最大值 0111 1111₂ = 127。其他類型同理擴展位數。
-- 查看類型最大最小值
SELECT
CAST(-1 AS UNSIGNED) AS tinyint_unsigned_max, -- 255
CAST(-1 AS SIGNED) AS tinyint_signed_min; -- -128
選對整數類型,是數據庫_schema 設計中性價比最高的優化動作之一。