数值
-
bit
[1 - 64] -
tinyint
1 smallint
2mediumint
3int
4-
bigint
8 -
float
4 浮点(单精度) double
8 浮点(双精度)decimal(m, d)
max(m, d) + 2 定点
别名 Synonyms:
integer
->int
bool
/boolean
->tinyint(1)
dec
/numeric
/fixed
->decimal
double precision
/real
->double
PS: 如果开启 REAL_AS_FLOAT
模式,REAL
就变成了 FLOAT
的别名。
字符串/文本
char
varchar
tinytext
text
mediumtext
longtext
JSON
MySQL 5.7 加入
二进制
binary
varbinary
tinyblob
blob
mediumblob
longblob
时间
类型 | 长度 | 备注 |
---|---|---|
year |
1 | |
date |
3 | 1000-01-01 ~ 9999-12-31 |
time |
3 | -838:59:59 ~ 838:59:59 |
datetime |
8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
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)
其他
enum
set
- Geometry 系列
货币
- 以分为单位
Integer
Decimal
,不要用float
,double