开发者社区> 问答> 正文

mysql 数据库中varchar的长度与字节

经常看到别人设置varchar的长度是255,它可以存储多少个汉字。在phpmyadmin中看到varchar的定义是变长(0-65535),它的最大长度到底是255还是65535,是不是可以设置成varchar(60000)?还有长度和字节的关系,如上设置,它的长度就是60000,可以存储60000个字节,这样理解对吗?
1

展开
收起
蛮大人123 2016-02-08 10:34:52 3629 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1
    可见,varchar(5)能存储5个字符,不管是数字,字母,还是汉字
    2
    该表中varchar类型的字段能容纳的最大字符数21842是怎么得来的?
    21842 = (65535-1-2-4)/3
    MySQL要求一个行的定义长度不能超过65535(包括多个字段),所以有65535.
    varchar的最大有效长度取决于最大行大小.
    减1的原因是实际行的存储从第2个字节开始.
    减2的原因是varchar头部的2个字节表示长度.
    减4的原因是字段id的int类型占用4个字节.
    除以3的原因是一个utf8字符占用3个字节.
    如果你在test2表里把varchar(21842)改为varchar(21844),那么就会报以下错误:
    1118 - Row size too large.
    The maximum row size for the used table type, not counting BLOBs, is 65535.
    This includes storage overhead, check the manual.
    You have to change some columns to TEXT or BLOBs.
    MySQL中char,varchar与text类型的选用:
    知道固定长度的用char,比如MD5串固定是32位.
    经常变化的字段用varchar.
    超过255字符的只能用varchar或者text,不能用char.
    能用varchar的地方不用text.

    2019-07-17 18:39:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载

相关镜像