关于char(M)和varchar(M)中M的含义。

关于char(M)和varchar(M)中M的含义。

http://img1.sycdn.imooc.com//climg/5e9dd62d09914ae613490130.jpg老师您好,关于M的含义到底是代表一个字符还是一个字节。如果代表的是一个字节,那么char类型是不是存储不到255个汉字,相对应的varchar也最多存储不到65535个汉字(暂且不论它用来表示存储长度的字节数)。针对M到底代表字节还是字符确实有点困惑。麻烦老师了。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、M代表的是字符  比如:VARCHAR(20) 则表示最大允许存入的字符长度为20

2、是的,char类型存储不到255个汉字,相对应的varchar也存储不到65535个汉字,因为汉字占用的字节数不同

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 布鲁特kg 提问者 #1
    老师您好,您看我理解的对不对,当我们用utf8格式进行存储时,char(20)代表存储的字符长度为20,也就是说可以存储到20个汉字,在utf8中一个汉字占用3个字节,也就是说存储空间为60个字节,不到255最大存储字节数,此时可以用char(20)来存储20个汉字; 相对应的varchar(20)代表最大存储字符数为20个,也就是最多开辟60个字节,再加上代表长度的一字节,也就是最多占用61个字节的存储空间; 还有就是因为char类型最大存储字节数是255字节,一个汉字占用3字节,是不是char类型最多可存储到85个汉字(255/3=85)。 谢谢老师的耐心的解答。
    2020-04-21 16:22:16
  • 好帮手慕小脸 回复 提问者 布鲁特kg #2
    同学你好, 1、如果同学的mysql中,utf8占3个字节,那么同学理解是正确的哦 2、同上所描述,理解是正确的 3、同学理解是正确的,最多可存储85个汉字 祝学习愉快~
    2020-04-21 17:33:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师