美文网首页mysql基础实践总结系列
Mysql varchar 长度是字节还是字符

Mysql varchar 长度是字节还是字符

作者: 十年磨一剑1111 | 来源:发表于2019-08-22 15:43 被阅读0次

关于varchar的长度是字节还是字符本人查阅很多文档发现他们写的都是字节长度,但是经过实践表明那个长度指的是能放下的字符串的个数

varchar(255) 表示最多可以放255个字符,不论是中文还是英文。

注:version 4版本之前是按字节

下面再来扩展一点知识:
在5.0以上的MySQL版本中varchar的最长的长度是65535字节,其最大长度受限于最大行长度(max row size 65535Bytes)。65535并不是一个很精确的上限,65535个字节是包括了所有字段的长度、变长字段的长度标识(每个变长字段使额外使用1个或者2个字节记录数据的实际长度)、NULL标志位的长度。下面来看下计算规则:

  1. 减去其他字段的长度,具体的计算方法要结合字段的类型来看
  2. 减去变长字段的长度标识,如果长度小于256使用1个字节存储,其他的使用2个字节存储。
  3. 减去NULL标识位,比如一张表中存在N个varchar字段,那么需要(N+7)/8 (取整) 个字节存储所有的NULL标志位。

下面来证明下(笔者测试的版本是MySQL8.0,字符集选用的是utf8):

mysql > show create table user2;
| user2 | CREATE TABLE `user2` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(21811) NOT NULL DEFAULT '',
  `pwd` char(32) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表'    |

其中username这个字段的长度21811是能设置的最大长度,如果再大就会报错,(65535-4-2-32 * 3) / 3 = 21811 个字符。
a. 其中 id int 型占用4个字节,
b. username 字段长度标识2个字节,由于是NOT NULL 所以没有NULL标识位。
c. pwd 字段占用32*3个字节,由于是NOT NULL 也不占用NULL标识位。
不过需要注意的是:不同的字符集每个字符使用的字节数是不一样的。另外,如果插入数据的时候数据的长度大于定义的长度默认是会报错的。

相关文章

  • Mysql varchar 长度是字节还是字符

    关于varchar的长度是字节还是字符本人查阅很多文档发现他们写的都是字节长度,但是经过实践表明那个长度指的是能放...

  • 数据库常用字段设计扫盲

    一、varchar varchar( N ) N 指的是字符的长度 长度 是当前字符集的 字符 长度,而不是字节长...

  • MySQL 字符串数据类型

    MySQL 字符串数据类型 CHAR & VARCHAR 区别: CHAR 是一种长度固定的类型;VARCHAR ...

  • MySQL中VARCHAR的单位

    前言 VARCHAR是MySQL中常用的数据类型,但其单位究竟是字符还是字节呢? 官方说明 经过查阅,MySQL的...

  • 随笔5号20170206-数据库中长度问题

    对数据库里长度理解了一波,int是定长,设置的只是显示宽度而已,不是字节数,而varchar,char是字符长度,...

  • varchar(500)

    MySQL4.1以前,VARCHAR数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8...

  • MySQL 选择合适的数据类型

    char 与 varchar char 属于固定长度的字符类型,而 varchar 属于可变长度的字符类型 检索时...

  • mysql日常使用

    大纲: 一. mysql 数据类型 注意点: char和varchar使用char长度不可变,varchar长度可...

  • mysql varchar跟char的区别

    非空CHAR的最大总长度是255【字节】;非空VARCHAR的最大总长度是65533【字节】。可空CHAR的最大总...

  • (转载)mysql varchar跟char的区别

    非空CHAR的最大总长度是255【字节】;非空VARCHAR的最大总长度是65533【字节】。可空CHAR的最大总...

网友评论

    本文标题:Mysql varchar 长度是字节还是字符

    本文链接:https://www.haomeiwen.com/subject/lhinsctx.html