mysql schema

2018-02-27 11:55:56来源:oschina作者:Canaan_人点击

分享

选择优化的数据类型



1.更小的通常更好 2.简单就好 3.尽量避免null


1.整型


tinyint 8 位-128 ~ 127对应 Byte (java) smallint16位-32768~32767对应 Short (java) mediumint 24位 int 32位对应 Integer(java) bitint64位 对应 Long (java) 注意:定义如:int(10) 和 int(20) 是没有意义的,不会改变实际的存储值


2.实数


float 浮点型,含字节数为4,32位,(7个有效位) 对应 Float (java)


double双精度实型,含字节数为8,64位 ,(7个有效位) 对应 Double(java)


decimal数字型,128位, 小数28个有效位,不存在精度损失,常用于银行帐目计算。

说明1: float(5,3) 5表示小数左边+右边总的位数, 3表示 小数位最多3位。这样整数位为2位 如: 1.353 正常10.2335 正常(最后一位四舍五入)100.1 溢出


说明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.日期


dateYYYY-MM-DD


timeHH:MM:SS


year YYYY


datetimeYYYY-MM-DD HH:MM:SS1001年 - 9999年使用 8 个字节存储


timestamp1970年 - 2038 年


5. 枚举


enum


6.位


bit


set


小记:


对于IPv4 人们经常使用 varchar(15) 来存储,然而,它实际上是32位无符号的整数,不是字符串,用小数点将地址分开,只是为了让人阅读,所以应用用无符号整数存储ip地址,可以使用 inet_aton() 与inet_ntoa()函数来将其转换

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台