mysql指明小数点位数_MySQL基础:数据类型

MySQL数据库中,通过存储引擎来觉得表的类型,即觉得表的存储方式。同时,MySQL中也提供了数据类型来觉得存储的数据的类型,MySQL中常见的数据类型有:整数类型,浮点数类型,定点数类型和为类型,日期和时间类型,字符串类型。

1.整数类型

16831761e0e1bbc26bc1475c913b644a.png

1.1 我们知道计算机底层只识别二进制码,整数类型的数据也不例外,只不过整数是有符号数(正负数),因此二进制码表示的数左边第一个位代表符号位(0整数,1负数)。这里tinyint是1个字节,即8位二进制数。所以,tinyint的最大值可表示为:

beed4f60e1ae163da2046f0773da8d32.png,转换为十进制为:2^7-1;      最小可以表示为:

db686d299bb0ec187b2b924ddd1aa111.png,转换为十进制为:-2^7。

1.2 MySQL支持数据类型后面指定该类型显示的宽度

(1)例如:int(4)表示int类型的数值显示宽度为4位,显示宽度和数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示的数字的个数,数值的位数小于指定的显示宽度时会在数字的左侧填充空格。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。

几种整数类型的默认宽度分别是:

416b179a317aae186fec9aea8c6045ff.png

2.浮点类型和定点类型

e429014a7825788c06d77a33f5a26102.png

2.1 MySQL中可以指定可以指定浮点型数据类型的精度

格式:float(m,d)、double(m,d);其中参数m称为精度,是数值的总长度,小数点不占位置;参数d是指小数点后的长度。例如,float(6,2)的含义是float类型,数据长度为6,小数点后保留2位。则:1234.56是符合要求的。

PS:(1)上述指定小数精度的方法虽然都适合于浮点数和定点数,但不是浮点数的标准用法。建议在定义浮点数时,如果不是实际情况需要,最好不要使用。

(2)对于定点数而言,decimal(m,d)是定点数的标准格式,一般情况下可以选择这种数据类型。

(3)如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。不同的是,float型和double型在四舍五入时不会报错,而decimal型会有警告。

2.2 精度使用举例

4650b23bc4e7415bc4402ec8aacf4eb3.png

当我们插入的数据精度不满足定义的数据类型精度时,我们的数据任就能插入成功,但会有警告的错误信息提示。

479d6e92ec9e589d7c69a7e5dd363508.png

1b171750169e3ab5880eaca5536a5ba1.png

当我们查询结果时发现数据被截断了,和原始数据相比MySQL采用了四舍五入的方法使得数据满足定义的精度。

677193945783e3b8431a073b34df27b6.png

ps:在MySQL中,定点数以字符串的形式存储,因此,其精度比浮点数要高,而浮点数会出现误差。如果要对数据的精度要求比较高,还是选择定点数(DECIMAL)比较安全。在对精度要求比较高的时候(如货币、科学数据等)使用DECIMAL的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点型时需要注意,并尽量避免做浮点数比较。

3.日期和时间类型

e7a452bdc4e7ca693f2fb5f3844708b6.png

ps: 如果存储年月日时分秒,并且年份的取值可能比较久远,最好使用datetime类型,而不是timestamp类型,因为前者比后者所表示的日期范围要长一些。如果存储的日期需要让不同时区的用户使用,则可以使用timestamp类型,因为只有改类型日期能够和实际时区相对应。

4.字符串类型

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值