MySQL提供了多种数据类型,包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型、二进制数据类型;
不同的数据类型有各自的的类型,使用范围也各不相同,而且存储方式也不相同
有两种类型的数字:整数和实数
整数类型
整数类型参考:各种整数类型的取值范围、存储的字节数
上图分析如下:
- 1,int类型和integer类型的字节数和取值范围是一样的,其实在MySQL中int类型和integer类型是一样的。
- 2,tinyint类型占用的字节最小,只需要一个字节。取值范围也是最小的。
- 3,bigint类型占用的字节最大,需要8个字节。气质范围是最大的。
- 4,不同类型的整数类型的字节数不同,根据类型所占的字节数可以算出该类型的取值范围。比如intyint的空间是一个字节,一个字节是8位。那么
- tinyint无符号数的最大值就是2的8次-1,也就是255。
- tinyint有符号数的最大值就是2的7次-1,也就是127。
- 5,MySQL支持数据类型的名称后面指定该类型的显示宽度,其基本形式如下:数据类型(显示宽度)【数据类型参数是整数数据类型的名称,显示宽度参数是指定宽度的数值,显示宽度是指能够显示的最大数据的长度。比如int(4)就是指定int类型的显示宽度是4】。
实际操作下整数相关的数据类型
关于上图我们发现,每个整数类型默认显示宽度与其有符号数的最小值的显示宽度相同,因为次数负号是占有一个位置,如果是正数的话,一个整数的数据类型的默认显示宽度刚好能显示该数据类型的所有值 ;tinyint类型的取值范围是-128~127 ,那么tinyint默认显示宽度就是4,int类型的最大值10位,所以int的默认显示宽度就是11
unsigned,zerofill,auto_increment属性:
总结:字段选择那个整数类型,取决于该字段的范围,如果字段的最大值不超过255,那么tinyint足够了,取值很大的时候,根据最大值的范围选择int 或者bigint类型,
比较常用的的整数类型时int
实数类型
实数类型包括 单精度浮点数float、双精度浮点数double、定点数类型decimal
几种数据类型的取值范围和字节数
总结:在MySQL中,定点数以字符串形式存储,因此,其精度比浮点数要高,而且浮点数会出现误差,这是浮点数一直存在的误差;如果要对数据的精度要求比较高,还是选择定点数decimal比较安全