数据类型:对数据进行统一的分类,从系统的角度出发为了能够使用统一的方式进行管理,更好地利用有限的空间
数据类型分为三大类:数值类型 字符类型 日期类型
数值类型分为整数型和小数型
整数型:tinyint 一个字节 0-255
smallint 两个字节
mediumint 三个字节
int 四个字节
bigint 八个字节存储
SQL中数值类型全部都是默认的有符号数,分正负
给数据类型限定为无符号数:int unsigned; -- 无符号数从0开始
显示宽度:默认告诉用户可以显示的形式而已,实际上用户可以控制,控制不会改变数据本身大小
显示宽度意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0增加宽度,不改变值的大小,zerofill 零填充:会导致数值自动变成无符号数;
例如:alter table my_int add int_7 tinyint(2) zerofill;当时用zerofill时默认为无符号数
零填充的意义:保证数据格式 如年月日
小数型
SQL中将小数型细分为浮点型和定点型
浮点型:小数点浮动,精度有限,而且会丢失精度 定点行:小数点固定,精度固定,不会丢失精度
浮点型
浮点型数据是一种精度型数据,超出指定范围后,会丢失精度(自动四舍五入)
Float单精度 四字节存储 精度范围7位左右
Double双精度 八字节存储 精度范围15位左右
使用方式:float表示没有小数部分; float(M,D) M代表总长度 D代表小数部分,整数部分长度M-D;
浮点型数据插入,整数部分位数不能超出长度,但是小数部分可以超出超度(系统会自动四舍五入)
浮点数如果超出精度范围一定会进行四舍五入,浮点数如果是因为系统进位导致整数部分超出长度,那么系统也允许成立
定点型
Decimal:变长,整数和小数分开计算,M最大是65,D最大是30;
查看警告指令 show warnings;
浮点型小数因为超出长度导致整数进位 OK,定点型因小数超出范围长度导致整数部分进位超出长度会报错;