Mysql 学习 ->数据类型篇(数值类型)

 

  1. 数据类型

 

整数类型

字节

最小值

最大值

TINYINT 1

有符号-128

无符号0

有符号 127

无符号 255

SMALLINT 2

有符号-32768

无符号0

有符号32767

无符号65535

MEDIUMINT 3

有符号 -8388608

无符号 0

有符号 8388608

无符号1677215

INT 4

有符号-2147483648

无符号0

有符号2147483647

无符号4294967295

BINGINT 8

有符号 -9223372036854775808

无符号 0

有符号9223372036854775807

无符号18446744073709551615

浮点数类型
字节
最小追
最大值
FLOAT 4

-+1.175494351E-38

-+3.402823466E+38

DOUBLE 8

-+2.2250738585072014E-308

-+1.7976931348623157E+308

定点数类型

字节

 

描述

DECIMAL(M,D) M+2

最大取值范围与DOUBLE相同,给定DECIMAL的有效值范围由M和D决定

 

位类型

字节

最小值

最大值

BIT(M) 1~8

BIT(1)

BIT(64)

  对于整数类型,Mysql支持类型名臣后面的小括号内指定显示宽度,例如int(5),当数值宽度小于5位的时候在数字前面填满宽度,一般配合zerofill使用。

  (zerofill就是 ‘0’填充的意思,在数字位数不够的空间用字符0填满)。

  

  如果插入的值大于宽度限制会不会报错?

    答:不会对插入的数据有任何影响,还是会按照类型的实际精度进行保存,所有的整数类型都有一个可选属性UNSIGNED(无符号),如果要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,他的取值范围下限取0,上限取原值的2倍。

  

  另外,整数类型还有一个属性,AUTO_INCREMENT(自动增长),在需要产生唯一标识或顺序时,可用这个属性,只作用于整数类型,值一般从1开始,通常用在主键(PRIMARY KEY)上

  注:mysql中数值类型基本就是这些,在选择数据类型的时候要根据应用时机发生的情况确定其取值范围,最后根据确定的结果慎重选择数据类型。

  对于小数的表示,Mysql分为定点型和浮点型:

    浮点型包括float(单精度)double(双精度),而定点数则只有decimal一种表示,定点数在Mysql内部以字符串的形式存放,比浮点数更精确,适用于货币等精度高的数据

   float,double,decimal三者之间的区别?

    创建一张表分别定义

      

    分别往id1,id2,id3中插入 1.23

      

    在向id1,id2字段插入1.234,而id3中仍然插入1.23

    

    可以看出,其中id1和id2由于标度的限制,舍去了最后一位,数据变成1.23

    接着同时向id1,id2,id3字段中插入数据1.234

    

    此时发现,数据都插入进去了,但是报了一个warning错误,id3这个记录是不能插入的,跟数据校检有关,涉及到sql mode的知识,之后在讲

    将表中的精度和标度都去掉,这次插入1.234

    

    插入数据
    

    可以发现,id1和id2字段可以正常插入数据,id3小数位被截断了,所以可以看出,浮点数如果不写精度和标度,则会按实际情况显示值,如果有精度和标度,则会四舍五入

    定点数如果不写精度和标度,则会按系统默认值decimal(10,0)来进行操作,如果数超过精度和标度会报错

 

    对于BIT类型,用于存放位字段值,BIT(M)可以存放多为二进制数,M范围1~64,如果不写则默认1,对于位字段,直接使用select命令不会看到结果,可以用bin()(显示二进制格式)或者hex()(显示十六进制格式)函数进行读取

    

    

    用bin()和hex()函数:

    

 

posted @ 2017-10-19 21:59  king`s  阅读(2199)  评论(0编辑  收藏  举报