MySQL 中 varchar 的长度

1. varchar(n) 的最大值字符数是多少

varchar 最大可以保存 65535 字节,但是具体保存多少个字符,不同的编码不一样。

MySQL 5.0 之前的版本:n 指的是 n 个字节

n 的最大值是 65535,如果以 utf-8 格式存放数据,最长保存 [n/3] 个汉字(一个汉字占 3 字节),即 varchar(20) 类型的字段只能保存 6 个汉字;

MySQL 5.0 之后的版本:n 指的是 n 个字符

无论是数字,字母还是汉字,都可存放 n 个,即 varchar(20) 类型的字段可以保存 20 个汉字;

utf8mb4 格式:varchar(n) 中每个字符最多占 4 个字节,英文数字占 1 个字节,汉字占 3 个字节。

2. varchar(n) 需要 1 到 2 个额外字节记录保存的字符长度

当 n<=255 的时候,只需要 1 个字节记录即可(数据表示范围:0~28-1,即 0~255);当 n>255 的时候,则需要 2 个字节记录(28~ 216-1,即 256~65535)。

字符的长度保存在第一个或者前两个字节中。所以(对于 utf8mb4 格式):

a. 如果 varchar(20),实际最多需要 1+20*4 个字节的存储空间;

b. 如果 varchar(255),实际最多需要 1+255*4 个字节的存储空间;

c. 如果 varchar(256),实际最多需要 2+256*4 个字节的存储空间;

d. 如果 varchar(500),实际最多需要 2+500*4 个字节的存储空间。

因为 varchar 是存储可变长字符串,所以:

a. 如果 name varchar(8),那么 name='12345678',实际长度为 1+8*1 字节;

b. 如果 name varchar(32),那么 name='12345678',实际长度为 1+8*1 字节;

c. 如果 name varchar(16),那么 name='1234',实际长度为 1+4*1 字节;

基于 MySQL 中 varchar 长度的设置问题 修改

posted @ 2023-03-07 20:46  Higurashi-kagome  阅读(1398)  评论(0编辑  收藏  举报