varchar与char的区别

(1) varchar与char的区别

       char是一种固定长度的类型,varchar则是一种可变长度的类型

(2) varchar(50)中50的涵义

       最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)

 (3) int(20)中20的涵义

       是指显示字符的长度

       但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示00000000001 ~~~00000000010,当字符的位数超过11,它也只显示11位,如果你没有加那个让它未满11位就前面加0的参数,它不会在前面加0

       20表示最大显示宽度为20,但仍占4字节存储,存储范围不变;

(4) mysql为什么这么设计

       对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

 

如何选择VARCHAR与CHAR类型?

    Varchar类型的存储特点

        Varchar用于存储变长字符串,只占用必要的存储空间

        列的最大长度小于255则只占用一个额外字节用于记录字符串长度

        列的最大长度大于255则要占用两个额外字节用于记录字符串长度

    varchar的适用场景

        字符串列的最大长度比平均长度大很多

        字符串列很少被更新

        使用了多字节字符集存储字符串

    Char类型的存储特点

        Char类型是定长的

        字符串存储在char类型的列中会删除末尾的空格

        Char类型的最大宽度为255

    Char类型的适用场景

        Char类型是个存储所长度近似的值

        Char类型使用存储短字符串

        Char类型适合存储经常更新的字符串列

猜你喜欢

转载自blog.csdn.net/qq_35642036/article/details/82820201