如题所述
第1个回答 2022-06-14
面试的生涯中,曾经有过这个下面这段问答:
那么 真相是 怎么样的呢 ?
万事不决,手册来help
手册已经明确说明 char 10 表示的是字符。 对于一个char(10)的字符,最大允许存储的字节是30个字节(utf8) 编码 ,那么对于字母类型,在utf8格式下是存储是占一个字节还是三个字节,如果是一个字节 最大能存储到30个字符吗?
我们通过建一张模拟表来测一下:
插入
查询
使用mysql --column-type-info 进入终端查看字段类型占用信息
我们可以看到虽然字母字符10个只占了10个字节,长度最大是30字节,但是最大限制仍旧是以字符来计算的。
对此 《innodb存储引擎》一书有下面这段说明
那么 真相是 怎么样的呢 ?
万事不决,手册来help
手册已经明确说明 char 10 表示的是字符。 对于一个char(10)的字符,最大允许存储的字节是30个字节(utf8) 编码 ,那么对于字母类型,在utf8格式下是存储是占一个字节还是三个字节,如果是一个字节 最大能存储到30个字符吗?
我们通过建一张模拟表来测一下:
插入
查询
使用mysql --column-type-info 进入终端查看字段类型占用信息
我们可以看到虽然字母字符10个只占了10个字节,长度最大是30字节,但是最大限制仍旧是以字符来计算的。
对此 《innodb存储引擎》一书有下面这段说明