整型:
类型 | 大小 |
---|---|
tinyint | 1字节 |
smallint | 2字节 |
mediumint | 3字节 |
int/integer | 4字节 |
bigint | 8字节 |
整数类型有可选的unsigned
属性,表示存储的是无符号数。比如说tinyint表示的数值范围为-128~127,那unsigned tinyint表示的数值范围为0~255。
整数类型可以指定显示宽度,我们常见到的int(11)对其能表示的数值范围不会变,当我们设置 zerofill ,它会将0的位置自动补全到指定位数。
实数:
实数是指带有小数的数字。
类型 | 说明 | 字节 |
---|---|---|
float | 单精度浮点型 | 4字节 |
double | 双精度浮点型 | 8字节 |
decimal | MySQL自带类型,可支持存储精确小数 | M字节 |
用法:float(n,m),double(n,m),decimal(n,m);n表示数据的总长度,m表示小数点后的长度。
例如decimal(18,9)占用9个字节,前面4个,后面4个,小数点1个。
字符:
类型 | 说明 |
---|---|
char | 定长字符串 |
varchar | 可变长字符串 |
自MySQL4.1起,每个字符串序列自己自定义字符集和排序规则。
通过char(n)/varchar(n)来指定字符串的最大长度,char为一个字节,也就是255;varchar为两个字节,也就是65535,不过不同字符集可能最大字符数不一样。
char是定长的,在显示的时候会把所有的空格全部去除,会导致视觉上的节省,适合存储长度大致一样的字符串,例如MD5码。
varchar是可变长的,正是因为可变长,在InnoDB引擎中,数据存储的基本单位为索引树上的数据页,每一页的存储空间有限,如果这个时候,长度增加,会导致页分裂现象。
时间:
类型 | 说明 |
---|---|
year | 年 |
date | 年-月-日 |
time | 小时:分钟:秒 |
datetime | 年-月-日 小时:分钟:秒/8字节 |
timestamp | 年-月-日 小时:分钟:秒/4字节 |