mysql schema

选择优化的数据类型

 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) 是没有意义的,不会改变实际的存储值

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

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()函数来将其转换

 

 

转载于:https://my.oschina.net/u/2552286/blog/1622778

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值