数值类型
数值类型
数字类型算是最简单的了,主要差异在于各个类型的取值范围大小限制,和对存储空间字节数的需求。数字类型当然是在满足情况的条件下越短越好,一方面 MySQL 每行有 65535 字节长度的限制,同时更宽的数据类型意味着对 CPU、内存、磁盘 IO 带来压力。
Type | Storage (Bytes) | Minimum Value Signed | Minimum Value Unsigned | Maximum Value Signed | Maximum Value Unsigned |
---|---|---|---|---|---|
TINYINT |
1 | -128 |
0 |
127 |
255 |
SMALLINT |
2 | -32768 |
0 |
32767 |
65535 |
MEDIUMINT |
3 | -8388608 |
0 |
8388607 |
16777215 |
INT |
4 | -2147483648 |
0 |
2147483647 |
4294967295 |
BIGINT |
8 | -263 |
0 |
2^63-1 |
2^64-1 |
定点类型
类型 | 长度 |
---|---|
TINYINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INTEGER | 4 |
BIGINT | 5 |
在数据库设计的时候,常常看到这些整形有个前缀长度,其实这对其类型本身的存储长度和精度没有影响,只会关系到某些交互式工具显示出来的字符个数。
浮点类型
类型 | 长度 |
---|---|
FLOAT | 4 |
FLOAT(p) [0,24] | 4 |
FLOAT(p) [25,53] | 8 |
DOUBLE,REAL | 8 |
计算机的浮点运算都是不精确的,如果要实现精确浮点运算,就需要使用 DECIMAL 类型。