mysql常用字段类型详解
数字一般用int(11),bigint(20),或者定点数字decimal(11,2),浮点数字float、double
定点数据,能保证准确性。
浮点数字是不准确的,为什么呢,它的本质是变成二进制再存储的,十进制变成二进制,0.1 这样的简单十进制小数在二进制下是一个无限循环小数,这就导致它只截取32位(float32,double截取64)
金钱相关的,一般用decimal
字符串一般用char、varchar、text,定长肯定是char
mysql一行不能超过65535 bytes【字节】,不包含text因为其是单独存储的,不过text有个小坑是不能用默认值(orm封装,或者用触发器解决),text推荐用一个单独表用主键对应
varchar受限于行,也不能设置太多,而且看起来它是动态的长度,实际上数据是会缓存到内存的,而且mysql为了优化查询,它的内存是按varchar最大长度保存到内存里的,为了避免消耗过多的内存,如果20够用,就不要设置255,以免浪费内存
字符和字节对应关系
UTF-8:UTF-8一个(字符)占用(3)个字节,英文占用(1)个字节。
GDK:GDK一个(字符)占用(2)个字节,英文占用(1)个字节。
UTF8mb4:一个中文占用4字节,一个英文占用1字节
在定义char、varchar时,指定的长度是字符还是字节?
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
也就是旧版为字节,新版都是字符。
要么数字、要么字符串,没特殊需求这两种类型基本就够用了。
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-509.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。