整型
tinyint | smallint | mediumint | int/integer | bigint |
---|
1 | 2 | 3 | 4 | 8 |
- 如果不设置无符号还是有符号,默认有符号,若想设置无符号,在后面添加UNSIGNED
- 若插入的数值超出了整型的范围,会报错out of range,并且插入临界值
- 若不设置长度,会有默认长度
- INT后括号内的数字不代表插入数值的范围,代表的是宽度,如:INT(5),则代表应显示五个数字,若插入数值123,最后应显示00123。但是由于默认不显示这些零,若要显示上述所说形式,需在后面加上ZEROFILL,注意zerofill默认unsigned。
浮点型、定点型
浮点型 | 浮点型 | 定点型 |
---|
float(M,D) | double(M,D) | dec(M,D)或decimal(M,D) | 4 | 8 | M+2 |
- 定点型最大取值范围和double相同
- D代表小数点后的位数,M代表小数和整数合起来的位数,超出范围则插入临界值
- M,D均可省略,定点型默认(10,0),浮点型根据输入值自定精度。
- 定点型的精确度较高,若对插入数值精度要求高,则考虑使用
字符型
保存较短字符串 | 短 | 长 | 长 |
---|
char(M) | varchar(M) | text | blob | M | M | | |
- M为字符数,char可以省略,默认1,varchar不可以
- char代表固定长度字符,varchar代表可变长度
- char比较耗费空间,但是效率高,varchar节约空间,但是效率低
- enum为枚举,指插入值必须是列表中指定值中的一个
- set保存集合
日期型
date | datetime | timestamp | time | year |
---|
4 | 8 | 4 | 3 | 1 | 日期 | 日期+时间 | 日期+时间 | 时间 | 年 |
- timestamp支持时间范围小,datetime大
- timestamp和实际时区相关,datetime只能反映插入时的当地时区
- timestamp易受MySQL版本影响
原则
数据类型的选择类型越简单越好,能保存的数值越小越好
|