首页 > 数据库技术 > 详细

《Mysql 数值类型》

时间:2019-02-27 18:52:34      阅读:190      评论:0      收藏:0      [点我收藏+]

一:整型

  - 常用类型

    • 类型            占用(字节)       范围             无符号范围                      无符号范围  
      TINYINT         1              2的8次方          -128127                    0256
      SMALLINT        2              2的15次方         -3276 83276 7              06553 5
      INT             4              2的31次方         -2147 4836 462147 4836 47  0 — 4294 9672 95
      BIGNET          8

  

  - 使用选择

    - 在 整型 的使用上,这些类型在很大程度上是相同的,只有它们存储的值的范围是不相同的。

    - 所以需要根据使用值 范围 来选择 整型类型

  

  - 关于整型宽度 (zerofill)

    - MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展(如 INT(6),6即是其宽度指示器。

    - 该宽度指示器并不会影响int列存储字段的大小,也就是说,超过6位它不会自动截取,依然会存储,只有超过它本身的存储范围才会截取;此

    - 处宽度指示器的作用在于该字段是否有zerofill,如果有就未满足6位的部分就会用0来填充

    - 注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

    - 设置一个字段为 zerofill 那么它必然是 unsigned 的

    • // 创建字段
      mysql> create table `demo` ( `num` tinyint(4) zerofill); Query OK, 0 rows affected (0.03 sec) // 查看字段属性
      mysql
      > desc demo; +----------+------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------------------+------+-----+---------+-------+ | num | tinyint(4) unsigned zerofill | YES | | NULL | | +----------+------------------------------+------+-----+---------+-------+ 1 row in set (0.00 sec)
      // 插入数据 mysql
      > insert into demo values (1); Query OK, 1 row affected (0.00 sec) // 查看数据 (宽度补充) mysql> select * from demo; +------+ | num | +------+ | 0001 | +------+

       

二: 浮点型

  - 常用类型

    • 类型                占用(字节)
      FLOAT(M,D)          4
      DOUBLE(M,D)         8
      DECIMAL(M, D)       M+2 字节 默认为(100)
      
      M 表示可以显示多少位数字(数字+小数点)
      D 位于小数点后,又称 精度/标度
        (数据的精度总是能精确到D位,也就是数据的不精确一定出现在小数点后)
        (数据存储的时候只能存储到D位小数)
      超出的位,Mysql会四舍五入进行保存

  

  - 使用选择

    - 对于精度准确度要求不高浮点数存储可以使用 float

      - float/double 不准确在于,在 Mysql 中,数据精确度取决于分配给数据结构的长度。在按照长度进行二进制转换时候,就会造成数据的不不准确。

      - double 和 float 的区别double 精度高,有效数字 16 位,float 精度 7 位。

      - 但 double 消耗内存是 float 的两倍,double 的运算速度比 float 慢得多,

      - SO,能用 float 时不要用 double(以省内存,加快运算速度)。

 

    - 如果需要存储一个准确的 浮点数 ,使用 DECIMAL

      - 但是 DECIMAL 存储长度最大为 65.

      - 如果需要更大精度,可以使用 字符串 存储

 

    - 《MySQL如何选择float, double, decimal》

 

三:  字符串

  - 常用类型

    • 类型            占用(字节)     
      char(n)         3*n
      varchar(n)      3*实际

  

  - 使用场景

    - char善于存储经常改变的值,或者长度相对固定的值,比如type、ip地址或md5之类的数据,由于 char 定长 不容易产生碎片。

      - char类型是使用固定长度空间进行存储,范围0-255。

      - 比如CHAR(30)能放30个字符,存放abcd时,尾部会以空格补齐,实际占用空间 30 * 3bytes (utf8)。检索它的时候尾部空格会被去除。

    - varchar善于存储值的长短不一的列,也是用的最多的一种类型,节省磁盘空间。

  

  - char 和 varchar 的区别 

 

四:日期类型

  - 常用类型

    • 类型                保存信息             占用(字节)
      DATE                年月日              4
      DATETIME            年月日时分秒         8
      TIME                时分秒              3
      TIMESTAMP           年月日时分秒         4
      YEAR                年                 1

       

  - 使用场景

    - DATE/DATETIME/TIME 由于其存储信息不同,所以根据需要保存内容选择

      - 由于 TIMESTAMP 支持时间太小(至 2038年), 所以时间存储尽量使用 DATETIME

    - 如果只想保存年份,使用 YEAR    

 

《Mysql 数值类型》

原文:https://www.cnblogs.com/25-lH/p/10442744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!