| 型別 | 有號範圍 | 無號範圍 (UNSIGNED) |
|---|---|---|
| TINYINT | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | -32,768 ~ 32,767 | 0 ~ 65,535 |
| MEDIUMINT | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
| INT / INTEGER | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
| BIGINT | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18,446,744,073,709,551,615 |
| 型別 | 範圍 | 備註 |
|---|---|---|
| FLOAT | -3.402823466E+38 ~ -1.175494351E-38、0、1.175494351E-38 ~ 3.402823466E+38 | 單精度,約 7 位有效數字 |
| DOUBLE / DOUBLE PRECISION / REAL | -1.7976931348623157E+308 ~ -2.2250738585072014E-308、0、2.2250738585072014E-308 ~ 1.7976931348623157E+308 | 雙精度,約 15 位有效數字 |
| DECIMAL(M,D) / NUMERIC(M,D) | 由 M (總位數含小數點) 與 D (小數位) 決定,M 預設 10,D 預設 0 | 精確定點運算,適合金額 |
| 型別 | 範圍 | 備註 |
|---|---|---|
| DATE | 1000-01-01 ~ 9999-12-31 | 3 bytes |
| DATETIME | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 bytes |
| TIMESTAMP | 1970-01-01 00:00:00 ~ 2038 年某日 | 4 bytes,時區相關 |
| TIME | -838:59:59 ~ 838:59:59 | 3 bytes,可表達時間間隔 |
| YEAR[(2|4)] | 4 位:1901~2155, 0000;2 位:70~69 (對應 1970~2069) | 1 byte,預設 4 位 |
| 型別 | 長度範圍 | 特性 |
|---|---|---|
| CHAR(M) [BINARY] / NCHAR(M) | M = 1~255 | 定長,右側空格填補,讀取去除尾部空格;BINARY 區分大小寫 |
| VARCHAR(M) [BINARY] | M = 1~255 | 變長,儲存實際長度+1 byte,尾部空格不填補 |
| TINYBLOB / TINYTEXT | 255 (2^8-1) 字元 | L+1 bytes |
| BLOB / TEXT | 65,535 (2^16-1) 字元 | L+2 bytes |
| MEDIUMBLOB / MEDIUMTEXT | 16,777,215 (2^24-1) 字元 | L+3 bytes |
| LONGBLOB / LONGTEXT | 4,294,967,295 (2^32-1) 字元 | L+4 bytes |
| 型別 | 容量 | 儲存位元組 |
|---|---|---|
| ENUM('v1','v2',...) | 最多 65,535 個不同值 | 1 或 2 bytes (視值數量) |
| SET('v1','v2',...) | 最多 64 個成員 | 1,2,3,4,8 bytes (視成員數) |
DECIMAL。DATE;需時區感知 → TIMESTAMP;純時間/間隔 → TIME。CHAR;其餘 → VARCHAR。ENUM;多選標籤 → SET。