一、整数类型:5种
包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT
须要考虑存储空间和数据可靠性平衡的问题sql
二、浮点数和定点数类型
浮点数类型包括FLOAT、DOUBLE、REAL,不精确;spa
SET sql_mode = “REAL_AS_FLOAT”;
其中FLOAT占用字节数少,取值范围小,DOUBLE占用字节多,取值范围大;code
定点数类型(DECIMAL),是精确的数据类型
1.它是把十进制数的整数部分和小数部分拆开,分别转换成十六进制数,进行存储。这样,全部的数值,就均可以精准表达了,不会存在由于没法表达而损失精度的问题。
2.MySQL 用 DECIMAL(M,D)的方式表示高精度小数。其中,M 表示整数部分加小数部分,一共有多少位,M<=65。D 表示小数部分位数,D对象
简单小结浮点数和定点数的特色:浮点类型取值范围大,可是不精准,适用于须要取值范围大,又能够容忍微小偏差的科学计算场景(好比计算化学、分子建模、流体动力学等);定点数类型取值范围相对小,可是精准,没有偏差,适合于对精度要求极高的场景(好比涉及金额计算的场景)。blog
三、文本类型
包括TEXT、CHAR、VARCHAR、ENUM、SET,区别以下:字符串
其中TEXT 类型也有 4 种,它们的区别就是最大长度不一样:it
注意:
1.TEXT 也有一个问题:因为实际存储的长度不肯定,MySQL 不容许 TEXT 类型的字段作主键,遇到这种状况,你只能采用 CHAR(M),或者 VARCHAR(M)。
2.在项目中,只要不是主键字段,就能够按照数据可能的最大长度,选择这几种 TEXT 类型中的的一种,做为存储字符串的数据类型。class
四、日期与时间类型
包括:YEAR、TIME、DATE、DATETIME、TIMESTAMP,
1.用得最多的日期时间类型是 DATETIME,由于虽然DATETIME 类型占用的存储空间最多,可是它表达的时间最为完整,取值范围也最大。效率
关于MySQL定义表字段类型时的建议:数据类型
不过,凡事都是有两面的,可靠性好,并不意味着高效,好比,TEXT 虽然使用方便,可是效率不如 CHAR(M) 和 VARCHAR(M)。