MySQL数据类型的总结

最近在学习MySQL,对MySQL数据类型做了些查阅资料,以下对最近的查阅情况进行总结~

字符串类型

char和varchar
  1. char(n) 是固定长度,最多255个字符;varchar(n) 是可变长度,最多65535个字符。
  2. 在存储大小上,char(n) 存储n个字节大小,如果字符串长度小于n,则后面用空格补齐,因此如果字符串后面有空格,用char 类型存放是无效的;varchar 则是实际字符串的长度+1/2个字节(如果n<=255,则加1个字节;如果n>255,则加2个字节)。
  3. 在查询速度上,char 速度比 varchar 快。
浮点型和定点型
  1. 浮点型包括有float和double,如float(m,d)double(m,d) ,其中m代表总个数,d代表小数位;定点型有decimal,如`decimal(m,d) ,其中,m是总个数,d是小数位。
  2. 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
  3. float是8位精度(4字节);double是16位精度(8字节)。

数据类型附属的数字n

TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT

这几个都是定长的数据类型,以Int为例。
Int类型属于定长类型,大小为4个字节,有符号存储范围为-2147483648~2147483647。
Int(n) 中的n表示的是其显示长度,不影响其存储空间大小。
所以,TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT后面附属的n表示其显示长度,不影响存储空间大小。

float(m,n),decimal(m,n)

float(m,n)是属于变长类型,decimal(m,n) 属于定长类型,其中m代表总的个数,n代表小数位的精确位数。因此在存储的时候,先判断小数位进行“对齐”,即“多删少补”,多删的规则是四舍五入,少补就是后面补0。然后对整数位进行判断是否越界,如果越界,根据不同的模式有不同的处理,严格模式则提示error: out of range,非严格模式则存储为上界数。

char(n),varchar(n)

char(n)varchar(n)的n都是用来限制存储长度,如果存入的字符串长度超过n,则报错。
比如在tc表中创建属性为char(4)varchar(4)的字段,然后分别insert长度为5的字符串则会报错。
插入长度超过n的字符串报错

decimal占用字节数计算方法

小数和整数分别计算,每9位数占4字节,剩余部分如下表换算:

位数占用字节数
00
1-21
3-42
5-63
7-94

举几个例子:
比如decimal(18,9),整数部分和小数部分各9位,所以各占4字节,共8bytes
再比如decimal(20,6),整数14位,需要4字节存9位,还需3字节存5位;小数6位,需3字节。共10bytes

参考

MySQL数字类型int与tinyint、float与decimal如何选择
mysql 数据类型

未完,待续~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值