1.字段类型
1.1 整型
类型 | 存储空间 |
---|---|
TINYINT | 8 位 |
SMALLINT | 16 位 |
MEDIUMINT | 24 位 |
INT | 32 位 |
BIGINT | 64 位 |
- 一般情况下 越小的列 越好。
- int(11) 的数字的含义只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。
1.2 浮点型
类型 | |
---|---|
float | 浮点型 |
double | 浮点型 |
decimal | 高精度小数类型 |
- 都可以指定列宽
- decimal(18,9) 表示总共18位,取9位存储小数部分,剩下9位存储整数部分
1.3 字符串
类型 | 是否定长 | 取值范围(字符) |
---|---|---|
char | 定长 | [0,255] |
varchar | 不定长 | [0,16383] |
- 一个汉字和一个英文字母都占一个字符(详见2.不同编码下字符与字节对应关系)
1.4 时间和日期
类型 | 占用字节 | 与时区是否有关 |
---|---|---|
datetime | 8 | 无关 |
timestamp | 4 | 有关 |
- timestamp 时间跨度有限问题
因为只占4个字节
最大为 ll a= (1<<31)-1
一天为86400s
所以年跨度= a/ 86400/365 =68 年
又因为它代表的是1970年开始的,所以最大支持到2038年;
2.不同编码下字符与字节对应关系
编码 | 一个字符所需字节数 |
---|---|
utf8mb4 | 4 |
utf8 | 3 |
gbk | 2 |
ascii编码 | 1 |