数据类型
数字类型
整数类型
| 类型 | 大小(byte) | 有符号范围 | 无符号范围 | 描述 |
|---|---|---|---|---|
| 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 | -2⁶³ ~ 2⁶³ - 1 | 0 ~ 2⁶⁴ - 1 | 大整数 |
浮点数类型
| 类型 | 大小(byte) | 有符号范围 | 无符号范围 | 描述 |
|---|---|---|---|---|
| FLOAT | 4 | -3.402823466E+38 ~ -1.175494351E-38, 0, 1.175494351E-38 ~ 3.402823466E+38 | 0, 1.175494351E-38 ~ 3.402823466E+38 | 单精度浮点数 |
| DOUBLE | 8 | -1.7976931348623157E+308 ~ -2.2250738585072014E-308, 0, 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | 0, 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | 双精度浮点数 |
注意: FLOAT 和 DOUBLE 的无符号范围仅将负值部分截掉,并不会将范围翻倍(与整数类型不同)。
定点数类型
| 类型 | 大小(byte) | 有符号范围 | 无符号范围 | 描述 |
|---|---|---|---|---|
| DECIMAL(M, D) | 取决于 M 和 D(见备注) | 取决于 M 和 D,最大与 DOUBLE 相同 | 取决于 M 和 D,最大与 DOUBLE 相同 | 精确定点数,用于需要高精度的场景(如金额) |
DECIMAL 存储空间计算:
DECIMAL 将每 9 位十进制数打包为 4 个字节,剩余位数按以下规则:
- 1~2 位剩余数字 → 1 字节
- 3~4 位剩余数字 → 2 字节
- 5~6 位剩余数字 → 3 字节
- 7~9 位剩余数字 → 4 字节
例如 DECIMAL(18, 9):整数部分 9 位(4 字节),小数部分 9 位(4 字节),共 8 字节。