前言
这个问题其实很有迷惑性,问的是字节,不是字符,我们知道在计算机中只能存储二进制数据。所以要搞清楚这个问题?就要搞清楚下面2个问题:
-
1.字节和字符的对应关系。
-
2.varchar 到底能存多少个字节。
为了搞清楚上面两个问题,又必须搞清楚mysql 的字符集 和比较规则,以及mysql记录的存储结构。这里我们都是以常用的InnoDB引擎为讨论的前提的。
如果你了解了上面的问题,你也可以回答下面的问题
-
1.乱码问题是怎么产生的呢?
-
2.mysql 有时候为什么不区分大小写?
字符集和排序规则
计算机中的的落盘存储都是二进制数据:即bit。所以我们存储字符串的话就要建立字符与二进制数据的映射关系了。
将一个字符映射成一个二进制数据的过程也叫做编码,将一个二进制数据映射到一个字符的过程叫做解码。mysql抽象出一个概念来描述某个字符范围的编码规则 ,这个概念就叫 字符集。
比如:
字符范围:
'a'、'b'、'A'、'B'。
编码规则:
'a'