MySQL数字数据类型(Numeric Data Type)

    MySQL能够支持所有标准SQL的数字数据类型。这些数据类型包括能够表示精确值的类型,例如:INTEGER、SMALLINT DECIMAL和NUMERIC等,同时也包括表示近似值的数据类型,例如:FLOAT、REAL和DOUBLE PRECISION等。在MySQL中,关键字INT与INTEGER的等价,而DEC和FIXED与DECIMAL等价,DOUBLE与DOUBLE PRECISION等价。在未开启REAL AS FLOAT模式的情况下,MySQL中将REAL数据类型视作DOUBLE PRECISION(一种非标准的变种形式)。

    MySQL中支持标准SQL整型数据类型:INTEGER(INT)和SMALLINT。同时,作为对标准的扩展,MySQL同样支持TINYINT、MEDIUMINT和BIGINT整型数据类型。下图中列出了各个整型数据类型所需要的存储空间和所能够表示的数据范围。


    FLOAT和DOUBLE类型表示近似值的数据类型。在MySQL中,使用四个字节来表示单精度值,而使用八个字节来表示双精度值。对于FLOAT,SQL标准允许在FLOAT关键字之后的圆括号中指定所表示的精度,但是并不允许指定指数的范围。在MySQL中,同样可以指定精度,但是该精度值仅仅用于确定所需存储空间的大小。如果指定的精度在(0 23)之间,MySQL便会选取一个具有四个字节的单精度FLOAT列,但是如果精度值在(24 53)之间,那么便会选用一个具有八个字节的双精度DOUBLE列。

    在MySQL中,同样支持一种非标准的语法:FLOAT(M, D)、REAL(M, D)和DOUBLE PRECISION(M, D)。此处,(M, D)表示数据值最大可以具有M个数字,在小数点之后可以有D个数字。例如:如果将一个列定义为FLOAT(7, 4),那么该列在显示时会具有类似-999.9999这样的格式。需要注意的是,MySQL在存储值时会进行舍入操作。如果你向一个定义为FLOAT(7, 4)类型的列中插入999.00009,那么最终保存的近似值便是999.0001。

  • 定点(Fixed-Point)类型:

    DECIMAL和NUMERIC数据类型会存储精确的数据值。这些数据类型可以用在对精度要求很高的情况下。在MySQL中,NUMERIC被实现为DECIMAL。因此,对DECIMAL适用的性质同样也适用于NUMERIC。需要注意的是,在MySQL 5.5中将DECIAML值存储为二进制格式。在一个DECIMAL列声明中,精度和小数位数可以同时指定,例如:salary DECIMAL(5, 2),该类型可以表示的数据范围为-999.99至999.99。

    在标准SQL中,DECIMAL(M)等价于DECIMAL(M, 0)。类似地,DECIMAL等价于DECIMAL(M, 0),这里M的值由具体的实现来决定,MySQL同时支持这两种格式的语法,并且默认的M的值为10。DECIMAL类型所能表示的数据的最大位数为65,但是一个给定DECIMAL列的实际范围由指定的列的精度和小数位数来共同约束。

  • Bit-Value类型:

    BIT数据类型可以用来存储bit-field值。一个BIT(M)的类型能够存储具有M bits的值,M的值可以从1至64。如果你分配的值小于M bits,那么值的左侧将会补零。
   

    另外需要特别注意的是,对于整型数据类型,MySQL中可以指定显示的宽度。例如,INT(4)将会指定一个由四个数字组成的INT。如果所存储的值的数字个数小于指定的范围,数字的左侧便会补白。

    显示宽度并不会约束值的表示范围,也不会阻止超出宽度的值插入该列。如果值的显示宽度超出指定的范围,那么该值会全部显示出来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值