mysql 字段类型

数字

整型
tinyint 1字节

有符号:-128~127

无符号:0~255,2的8 次方

smallint 2字节

有符号:-32768~32767

无符号:0~65535,2的16次方

mediumint 3字节

有符号:-8388608~8388607

无符号:0~16777215,2的24次方

int 4字节

有符号:-2147483648~2147483647

无符号:0~4294967295,2的32次方

bigint 8字节

有符号:-9223372036854775808~9223372036854775807

无符号:0~18446744073709551615,2的64次方

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 可以为整型指定宽度,int(5) 表示当数值宽度小于5位时在数字前面填满宽度,要配合zerofill属性使用,负责没有意义。给字段设置zerofill 和 unsigned配套使用。
  2. unsigned int 存 ip 比 char 存 ip 更节省空间,inet_aton('192.168.1.200') 将 ip 转换为无符号整型,inet_ntoa(3232241412) 将无符号整型转换为 ip。php 中通过 ip2long() 和 long2ip() 来进行前面的转换。参见:http://blog.csdn.net/fdipzone/article/details/49532001

 

浮点数
float(m,d) 4字节 单精度浮点型;m是总位数,d小数位
double(m,d) 8字节 双精度浮点型;m是总位数,d小数位

decimal(m,d)

或dec(m,d)

m+2 存储字符串的浮点数

 

 

 

 

 

 

  1. float(m,d)、double(m,d),插入整数时,小数位自动补上d个0;小数位不够d个时,自动补0到d位。浮点数精度误差参见:http://www.jb51.net/article/31723.htm
  2. mysql 内部使用 double 作为内部浮点计算的类型。
  3. decimal(m,d) 用字符串来存储,不存在精度损失,但浮点数类型在存储同样范围的值时,通常比decimal 使用更少的空间。所以只在都对小数进行精确计算时才使用decimal,但在数据量比较大的时候,可以考虑使用 bigint 代替 decimal,这样可以同时避免浮点存储计算不精确和decimal精确计算代价高的问题。 参见《高性能mysql》 150页。
posted @ 2017-02-23 11:02  S3c0ldW4ng  阅读(272)  评论(0编辑  收藏  举报