数值
-
bit[1 - 64] -
tinyint1 smallint2mediumint3int4-
bigint8 -
float4 浮点(单精度) double8 浮点(双精度)decimal(m, d)max(m, d) + 2 定点
别名 Synonyms:
integer->intbool/boolean->tinyint(1)dec/numeric/fixed->decimaldouble precision/real->double
PS: 如果开启 REAL_AS_FLOAT 模式,REAL 就变成了 FLOAT 的别名。
字符串/文本
char-
varchar -
tinytext textmediumtext-
longtext -
JSONMySQL 5.7 加入
二进制
binary-
varbinary -
tinyblob blobmediumbloblongblob
时间
| 类型 | 长度 | 备注 |
|---|---|---|
year |
1 | 四位数:1901 ~ 2155 两位数:00 ~ 69 (2000 ~ 2069) 70 ~ 99 (1970 ~ 1999) |
date |
3 | 1000-01-01 ~ 9999-12-31 |
time |
3 | -838:59:59.999999 ~ 838:59:59.999999 即:-34d23h ~ 34d23h |
datetime |
8 | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 |
timestamp |
4 | 1970-01-01 00:00:00 ~ 2038-01-19 11:14:07 |
- 用字符串(
varchar)表示时间,除了失去数据库这一层的数据类型保证之外,还会在时间比较运算场景下,失去索引命中可能。 - 用整型数
bigint(8 字节)表示时间,可以扩大timestamp时间范围,但要自己维护数据(其实还是比较好维护的)。 - 带时区的时间:
timestamp - 带精度的时间:
time、datetime、timestamp,精度最大为 6,表示毫秒。比如:timestamp(6)
其他
enumset- Geometry 系列
货币
- 以分为单位
Integer Decimal,不要用float,double