MySQL数据类型

整数型和浮点数类型

两者最大的区别是能否表达小数。整数型不能表达,浮点可以。
MySQL支持数据类型后指定显示宽度,比如int(4)是指该整数型的显示宽度为4。可以插入大于显示宽度的数据。
zerofill参数表示数字不足的时候,显示空间以0来填充。
auto_increment属性是表示自增属性。
tinyint的取值范围是0~255,bigint的取值范围最大。
常用整数类型是int。

浮点数类型包括float和double类型。double类型精度比float类型高。小数点后10位以上需要double类型。

浮点数类型和定点数类型

浮点数包括float和double,定点数是decimal或者dec。
在MySQL中,可以指定浮点数和定点数的精度,形式是数据类型(M,D),M参数称为精度,是数据的长度;D是标度,指小数点后的长度。
定点数精度比浮点数高,而且浮点数会有误差。高精度需要定点数。
对于浮点数和定点数,当插入值的精度高于实际定义的精度时,系统会自动进行四舍五入处理。目的是使精度达到要求。
浮点数四舍五入时系统不会报警,定点数会报警。
在未指定精度的情况下,浮点数和定点数有其默认精度。float型和double型会保存实际精度。定点数默认为整数。
精度与操作系统和硬件的精度有关系。

char类型和varchar类型

char类型的长度是固定的,而varchar类型长度在范围内可变。因此varchar占用空间比char小。
对于长度变化比较大的字符串类型,最好是选择varchar类型。
char类型的处理速度比varchar类型快。

时间和日期类型

year类型指标是年份。time类型只表示时间。date类型只表示日期。
需要记录日期和时间,可以选择datetime和timestamp类型。datetime类型时间范围大于timest类型。
timestamp类型是根据时区来显示,需要跟随时区变化则需要使用此类型。

enum(枚举)类型和set类型

enum类型最多有65535个成员,set类型最多64个成员。enum类型只能选择一个成员,set可以选择多个。
因此,对于多个值选择一个的,比如男女类别,可以使用enum类型。对于可以选取多个值的的字段,使用set类型。

text类型和blob类型

text只能存储字符数据,blob可以存储二进制数据。
text类型包括tinytext、text、mediumtext和longtext。区别在于长度,tinytext最小,longtext最大。blob类似。

其他

在MySQL中,布尔类型等价于tinyint类型。
char、varchar、text类型都可以存储路径,但使用\符号会被过滤,需要使用/或者\代替。