• MySql常用数据类型分析


    整数类型

    TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

    • 分别使用8,16,24,32,64位存储空间,值得范围-2的(N-1)方到2的(N-1)方-1。根据需要存储的范围大小,选择最小的数据类型。根据实际情况,选择使用UNSIGNED属性。
    • 数据类型只决定怎么保存数据,计算一般使用BIGINT整数。
    • 整数可以指定宽度,例如INT(11)。一般是没有意义的,不会限制值得合法范围,只是规定交互工具的显示位数。对于存储和计算,INT(1)和INT(20)是一样的。

    实数类型

    FLOAT、DOUBLE、DECIMAL

    • 因为CPU不支持对DECIMAL计算,CPU支持原生浮点计算,所以浮点计算更快。
    • 浮点和DECIMAL都可以指定精度,但是对浮点的精度,MySql一般选择不同的数据类型或者存储时对值进行取舍,都是非标准的,所以建议只指定数据类型,不指定精度。
    • 浮点的使用空间比DECIMAL小,FLOAT使用4个字节,DOUBLE使用8个字节,有更高的精度和范围,所以MySql内部使用DOUBLE计算浮点。
    • 一般情况下实数类型选择浮点类型,如果需要对小数精确计算使用DECIMAL。如果数据量比较大,可以使用BIGINT代替DECIMAL,程序控制小数点位数。

    字符串类型

    varchar、char、blob、text

    • varchar类型用于存储可变长的字符串,比定长类型更节省空间。(有例外的情况,如果使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,但是varchar需要使用1或2个额外的字节记录字符串的长度。)
    • 使用varchar的情况:字符串的最大长度比平均长度大很多;列的更新很少,所以不会有碎片;
    • char类型是定长的,适合存储很短的字符串,或者所有值接近同一个长度,例如MD5值。
    • 一般情况下都可以选择varchar类型,但是注意只分配真正需要的空间。

    日期和时间类型

    DATETIME、TIMESTAMP

    • DATETIME能保存从1001年到9999年,精度为妙,与时区无关。而TIMESTAMP只能保存1970年到2038年,显示的值依赖于时区。
    • TIMESTAMP拥有DATETIME没有的属性,如果在插入时没有指定第一个TIMESTAMP值,MySql则设置这个列的值为当前时间。在更新一个记录时,MySql会默认更新第一个TIMESTAMP值(除非在UPDATE时指定了值)。TIMESTAMP默认为NOT NULL。
    • 除了特殊情况下,尽量使用TIMESTAMP,因为它比DATETIME的效率更高。

    转载请注明出处。
    作者:wuxiwei
    出处:http://www.cnblogs.com/wxw16/p/6148001.html

  • 相关阅读:
    基础档案后台CO应用实例_存货档案自动同步功能
    U8应收管理Co单据
    U8供应链各业务单据CO功能
    jq判断是PC还是手机端的方法
    C#下OCX控件的完美使用
    如何使用C#调用U8的COM组件之四 Interop合并方案
    如何使用C#调用U8的COM组件之三 繁多的Interop
    如何使用C#调用U8的COM组件之二 利器与初探
    如何使用C#调用U8的COM组件之 一前言
    【vue】table动态加载图片时,遇到图片不显示问题
  • 原文地址:https://www.cnblogs.com/wxw16/p/6148001.html
Copyright © 2020-2023  润新知