VARCHAR(N)类型,utf8编码,则N最大值为多少,n表示什么?
有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少? 先明白计算的一些规则限制 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ① 存储限制 需要额外地在长度列表上存放实际的字符长度:小于255为1个字节,大于255则要2个字节 ② 编码限制 gbk:每个字符最多占用2个字节 utf8:每个字符最多占用3个字节 ③ 长度限制 MySQL定义行的长度不能超过65535,这个限制了列的数目,比如char(255) utf8 那么列的数目最多有65535/(255*3)=85,列的数目可以从这里得到依据 行长度计算公式如下: row length = 1 + (sum of column lengths) + (number of NULL…