MySQL数据类型-数值类型 (整数 小数)

MySQL 数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL支持多种类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。大致可以分为四类:数值、日期/时间、字符串(字符)和二进制类型。

数值类型

MySQL支持所有标准SQL数值数据类型。整数类型、浮点数类型和定点数类型

  • 整数类型包括 TINYINTSMALLINTMEDIUMINTINTBIGINT
  • 浮点数类型包括 FLOATDOUBLE
  • 定点数类型为 DECIMAL

整数类型

整数类型又称数值型数据,数值型数据类型主要用来存储数字。其属性字段可以添加 AUTO_INCREMENT自增约束条件。

小数类型(浮点数和定点数型类型)

  • 不论是定点类型还是浮点类型,如果插入值的精度超出实际定义的精度范围,系统会自动进行四舍五入处理,使值的精度达到要求
  • 浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题,所以尽量避免做浮点数比较。
浮点数型类型
  • 浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);
  • 浮点类型和定点类型都可以用**(M, D)来表示,其中M称为精度,表示总共的位数(小数点"."不占位数);D称为标度,表示小数的位数**。
  • 如:float(6,2)的含义数据是float型,数据长度是6,小数点后保留2位。所以,1234.56是符合要求的
  • 浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。
  • FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定)
  • 建议在定义浮点数时,如果不是实际情况需要,最好不要使用指定小数精度的方法,如果使用了,可能会影响数据库的迁移
定点数型类型
  • 定点类型只有一种,就是 DECIMAL
  • DECIMAL 如果不指定精度,默认 D 值为 0、M 值为 10,即(10,0),就是认为是整数,默认情况下也就是表示整数,插入小数的话小数部分会被舍弃掉
  • DECIMAL 类型不同于 FLOAT 和 DOUBLE。DECIMAL实际上是以字符串的形式存放的,DECIMAL 可能的最大取值范围与 DOUBLE 相同,但是有效的取值范围由 M 和 D 决定。如果改变 M 而固定 D,则取值范围将随 M 的变大而变大,占用 M+2 个字节。
  • 如果要对数据的精度要求比较高,如货币、科学数据等,还是选择定点数DECIMAL类型l比较安全

总览表

类型类型名称大小范围(有符号)范围(无符号)unsigned 非负数用途
整数类型TINYINT1 bytes(-128,127)(0,255)很小的整数
整数类型SMALLINT2 bytes(-32 768,32 767)(0,65 535)小的整数
整数类型MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)中等大小的整数
整数类型INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)普通大小的整数
整数类型BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
浮点数类型FLOAT4 bytes(-3.402823466E+38,-1.175494351E-38)0 和 (1.175494351E-38,3.402823466E+38)单精度、浮点数值
浮点数类型DOUBLE8 bytes(-1.7976931348623157E+308,-2.2250738585072014E-308)0 和 (2.2250738585072014E-308,1.7976931348623157E+308)双精度、浮点数值
定点书类型DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值,同DOUBLE型依赖于M和D的值,同DOUBLE型小数值
  • 显示宽度和数据类型的取值范围是无关的。显示宽度只是指明 MySQL 最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。例如,year 字段插入 19999,当使用 SELECT 查询该列值的时候,MySQL 显示的将是完整的带有 5 位数字的 19999,而不是 4 位数字的值。

  • 其他整型数据类型也可以在定义表结构时指定所需的显示宽度,如果不指定,则系统为每一种类型指定默认的宽度值。

  • 不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值