mysql 5.7中varchar 和 char的理解

来源:互联网 发布:Ubuntu sambaclient 编辑:程序博客网 时间:2024/05/19 05:37

做数据库设计,偶然间研究了一下varchar 和char  这两个东东  对于我这种渣渣连二进制字节都不懂的人理解起来还挺费劲,不过功夫不负有心人  理论上的知识从网上看的翻看了好多文章有的文章真是误人子弟,先说一下核心的在带点理论  ,核心的是我亲自试验出来的



mysql中varchar(255)括号中的255代表限制长度255个字节  这个()中如果是utff8 编码的 最多可以写为21843(不能为空) 可以存21843个中文数字英文符号  这个是这么计算的  允许最大长度为65535但是utf8就要÷3,因为utf8一个字符占3个字节,  得到21845  当长度设置超过255 mysql要用2个字符长度来作为标识,那么小于等于255也就不用研究最大值了,    所以要减去2  有的文章里写65535-2÷3貌似是不对反正我测试的是utf8编码应该是减去3个字符长度而不是3个字节长度   所以应该是先除以3再减去2 得到21843          有可能你写到括号中的时候会报错.这时一句骗子脱口而出,我就丢大人了.这时报错因为mysql中海油一个设置是   如果你允许为空  又要减去一个字符那么你只能填21842.      那么还要考虑一个问题   就是比如要是还想设置char(5)那么你还要在21843的基础上-5才能设置charr(5)   因为他是按照整行计算的     同理你再设置varchar和char也要相对减少数值才可以   



那么这里的char(5)和varchar(10)指什么呢?   varchar就是你可以最多存入英文,数字中文标点符号空格加起来10个    char(5)  是你可以最多存入英文,数字中文标点符号空格加起来5个  但是不管你存入几个 他还是占用5个字符长度  虽然你用select语句查询他也是只显示你存入的东东    那么char()括号中最大可以写255要选择无符号     如果有符号则取值范围是-127到127  



php中的strlen计算的是字节长度不是字符长度,utf下计算一个中文为3英文数字各为1    用mb_strlen函数计算相对编码格式下的字符长度   utf下计算一个中文英文数字各为1


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 oppor9解锁图案忘了怎么办 oppor9s锁屏密码忘了怎么办 oppor9s忘记锁屏图案怎么办 oppor9忘记锁屏图案怎么办 电脑锁屏卡住了怎么办 dell电脑密码忘了怎么办 dell电脑密码忘记了怎么办 手机锁屏为什么打不开怎么办 手机图形解锁忘记了怎么办 华硕电脑锁屏了怎么办 5s忘记解锁密码怎么办 苹果手机密码忘记了怎么办 苹果手机iphone已停用怎么办 手机被停用怎么办不用电脑 激活锁是别人的怎么办 6s开机密码忘了怎么办 苹果手机忘记解锁密码怎么办 忘记苹果触控id怎么办 苹果6app被锁了怎么办 捡的苹果id锁了怎么办 苹果手机id密码锁了怎么办 美版5s刷机后激活怎么办 vivo手机图案解锁忘记了怎么办 苹果5sid锁死了怎么办 苹果id账号被锁怎么办 苹果6s忘了ld怎么办 小米忘记图形解锁怎么办呢 索尼手机忘记解锁图案怎么办 oppoa37忘记锁屏密码怎么办 oppoa37锁屏密码忘了怎么办 oppor9图案密码忘了怎么办 oppor忘记锁屏图案怎么办 oppor手机忘记解锁图案怎么办 oppor手机忘记图案了怎么办 oppo手机屏幕锁忘了怎么办 三星手机屏幕锁忘了怎么办 手机主菜单坏了怎么办 索尼手机密码忘了怎么办 索尼笔记本密码忘了怎么办 索尼手机解锁密码忘了怎么办 索尼记录仪密码忘了怎么办