欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL的varchar类型字段

程序员文章站 2024-01-30 20:00:58
业务变化,前端要求增加一个传输字段的长度,得到的一些mysql varchar字段的知识;目录varchar长度是字符长度,不是字节长度:VARCHAR的存储: VARCHAR的长度扩充--能不能快速varchar长度是字符长度,不是字节长度:现在使用的,应该都是 mysql5 以上的版本,所以才会说 varchar的长度是字符长度,不是字节长度;这个是mysql4到mysql5的变化,mysql4和以前版本,varchar是按照字节长度来算的;到了mysql5开始,按照字......

业务变化,前端要求增加一个传输字段的长度,得到的一些mysql varchar字段的知识;

 

目录

varchar长度是字符长度,不是字节长度:

VARCHAR的存储:   

VARCHAR的长度扩充--能不能快速


varchar长度是字符长度,不是字节长度:

现在使用的,应该都是 mysql5 以上的版本,所以才会说 varchar的长度是字符长度,不是字节长度;这个是mysql4到mysql5的变化,mysql4和以前版本,varchar是按照字节长度来算的;到了mysql5开始,按照字符来算;

 

VARCHAR的存储:   

varchar是可变长度的字段类型,可以从0---65535(行最大长度65535bytes)

     varchar会使用1个字节,或者2个字节(byte)放在在数据前,表示数据有多少字节(bytes);如果字段长度不超过255字节那就使用1byte,否则使用2bytes;

MySQL的varchar类型字段

( 这一段,mysql5.7的文档和8.0的文档中,一模一样;
      https://dev.mysql.com/doc/refman/5.7/en/char.html
      https://dev.mysql.com/doc/refman/8.0/en/char.html

按照第一条,varchar(X)的字节长度是 X * character set 长度;

    如果使用了 utf8,那么一个字符就是3个字节;varchar(6)的长度是 : 6*3=18字节;

VARCHAR的长度扩充--能不能快速

varchar的长度扩充,在mysql5.6或以下版本,varchar字段扩充长度,都需要对每个单元格进行copy处理;

在mysql5.6以上的版本,如果满足一定的条件,增加参数 ALGORITHM=INPLACE,就可以瞬间完成;

那是什么条件呢? 就是上述第二点中的说明,varchar在存储时,会使用1byte或者2byte来表示value的长度;字段扩充后,如果这个标识的长度不变化,就可以瞬间完成,否则只能数据重写了;

MySQL的varchar类型字段

本文地址:https://blog.csdn.net/cfy_zybing/article/details/107323460