选择优化的数据类型java
1.更小的一般更好
2.简单就好
3.尽可能避免null函数
1.整型优化
tinyint 8 位 -128 ~ 127 对应 Byte (java)
smallint 16位 -32768~32767 对应 Short (java)
mediumint 24位
int 32位 对应 Integer(java)
bitint 64位 对应 Long (java)
注意:定义如:int(10) 和 int(20) 是没有意义的,不会改变实际的存储值spa
2.实数设计
float 浮点型,含字节数为4,32位,(7个有效位) 对应 Float (java)ip
double 双精度实型,含字节数为8,64位 ,(7个有效位) 对应 Double(java)内存
decimal 数字型,128位, 小数28个有效位,不存在精度损失,经常使用于银行账目计算。md5
说明1: float(5,3) 5表示小数左边+右边总的位数, 3表示 小数位最多3位。这样整数位为2位
如: 1.353 正常 10.2335 正常(最后一位四舍五入) 100.1 溢出 ci
说明2:字符串
float f = 345.98756f;--结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;--结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
数值存储范围越小的精度越高,存储数值范围越大,精度就越不许确,若是存储正常金额的状况下,使用money,好处在于能够存储不指定的小数点位数的数值,比较真实。若是对于既要求精度,又固定小数点位数的数值存储,采用decimal(numeric),优势在于能够自定义小数点位数,精度高。如特殊状况,如数值范围巨大只能用float(real)类型了,此类型通常不提倡使用。
3字符型
varchar 变长 如 varchar(10) ,将存储10个字符长度 ,设计中不要刻意的将字符长度调大,
大长度会消耗更多的内存 ,最大 65535
char 定长 适合存在密码的md5值,等其余固定长度的字符 ,最大 65535
binary 二进制形式,对应 char
barbinary 二进制形式,对应 varchar
text 存储大长度字符
blob 二进制形式存储,对应 text
技巧: text 很长,能够使用 substring(column,length) 来截取, 在 order by 中一样也适用
4.日期
date YYYY-MM-DD
time HH:MM:SS
year YYYY
datetime YYYY-MM-DD HH:MM:SS 1001年 - 9999年 使用 8 个字节存储
timestamp 1970年 - 2038 年
5. 枚举
enum
6.位
bit
set
小记:
对于IPv4 人们常用 varchar(15) 来存储,然而,它其实是32位无符号的整数,不是字符串,用小数点将地址分开,只是为了让人阅读,因此应用用无符号整数存储ip地址,能够使用 inet_aton() 与inet_ntoa()函数来将其转换