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
- mysql 5.7中varchar 和 char的理解
- mysql中varchar和char的区别
- mysql中char和varchar的区别
- Mysql中 char 和 varchar 的区别
- MySql中char和varchar的区别
- MySQL中char和varchar的区别
- MySQL中CHAR和VARCHAR
- MySQL中CHAR和VARCHAR
- mysql的char和varchar
- mysql中char和varchar,where和having的区别
- mysql sql 中char 和 varchar 的区别
- 由MySQL中char和varchar效率想到的
- MYSQL中CHAR,VARCHAR,BLOB和TEXT的比较
- mysql中char和varchar的 左右空格区别
- 由MySQL中char和varchar效率想到的
- Mysql数据库中varchar类型和char类型的区别
- MySQL中char、varchar和text的区别
- MySQL中char、varchar和text的区别
- ajax,json,跨域jsonp总结
- CSS之登录表单
- Qwt框架练习1
- javascript--history对象
- java中HashSet详解
- mysql 5.7中varchar 和 char的理解
- AndroidStudio buildgradle升级导致的兼容性问题
- 父类引用指向子类对象
- sql:decode()的用法
- JS正则密码验证
- 双线性插值算法原理及其实现
- leetcode-344. Reverse String 字符串翻转,切片的用法
- 云计算术语: Fabric & Instance
- 输出任意网站的html到本地