1. 整数类型:

类型

存储

正负数范围

全正数范围

全正长度

备注

tinyint

1字节

-128~127

0~255

3

smallint

2字节

-32768~32767

0~65535

5

mediumint

3字节

-8388608~8388607

0~16777215

8

可用于邮编号

int

4字节

-2147483648~2147483647

0~4294967295

10

可用拼接1的方式存手机号

bigint

8个字节

±9223372036854775808-1

18-------

20位

可存储手机号

注意:
1.在类型后面加unsigned,可向服务器声明全正数。可使正数最大值x2
一般喜欢使用int作为主键类型,若在表定义时加上int unsigned。可使主键范围扩到原来的两倍,不用担心主键值用尽的尴尬情况
2.手机号可以用int也可以用bigint。但即使是bigint也比varchar(11)占用更少的空间,从而在这一点上性能更高。
3.但是:任何数字列与unsigned定义的列进行计算后,若出现负数结果,则会返回 UNSIGNED的最大值。这个问题是继承C语言的。若考虑到会产生列与列直接的计算,需要避免UNSIGNED的定义。只在主键列上UNSIGNED设置即可,因为主键列一般设置为业务无关自增列。
4.留空

2.数值型(DEMICAL,NUMERIC)
DEMICAL,NUMERIC都是用来存储精确的数值,一般金额使用这个参数,DEMICAL是基本类型,NUMERIC按DEMICAL进行计算。DEMICAL按照二进制的格式存储
例如:我们公司使用DEMICAL(18,4)来存储金额数值
小数位为4位,整数位位18-4=14位
DEMICAL(0),无法存数据,DEMICAL(X)不指定小数位数时,默认为0,理论上DEMICAL最长可以容纳65位数字

3.位值型(bit)
用于存储位值,最长可达64位,mysql命令行客户端无法查看位值数据。导出时也可能显示乱码,不要担心。
应用:bit(1) 用于判断是否
bit(32) 用于存储IP地址,只占4字节,应该是最省空间的选择
例如:bit(6) 存入 b'101',其实是按照00101来存储,不足的会在左边补零,读取出来视不同客户端也会补零
4.浮点类型
float与double
其小数点位数和总位数的关系与DEMICAL相似。浮点类型的数值是不精确的,需要精确计算的数值不建议设置为浮点型
例如:float(7,4) 存入9999.00009,小数位超出1位,其他的类型都会报错,
但是浮点型会自动四舍五入,再次取出后就会变成999.0001


转载于:https://blog.51cto.com/l0vesql/2046544