MySQL教程学习之面试题03_MySQL中varchar与char的区别

教程发布:风哥 教程分类:MySQL教程 更新日期:2019-03-17 浏览学习:2327

风哥MySQL学习教程中提到的varchar与char的区别以及varchar(50)中的50代表的涵义
一、varchar与char的区别
在单字节字符集下, char( N) 在内部存储的时候总是定长, 而且没有变长字段长度列表中。 在多字节字符集下面, char(N)如果存储的字节数超过 N,那么 char( N)将和 varchar( N)没有区别。在多字节字符集下面,如果存
储的字节数少于 N,那么存储 N 个字节,后面补空格,补到 N 字节长度。 都存储变长的数据和变长字段长度列表。 varchar(N)无论是什么字节字符集,都是变长的,即都存储变长数据和变长字段长度列表。
二、varchar(50)中50的涵义
最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)。在早期 MySQL版本中, 50 代表字节数,现在代表字符数。
三、int(20)中20的涵义
是指显示字符的长度
不影响内部存储,只是影响带 zerofill 定义的 int 时,前面补多少个 0,易于报表展示
四、mysql为什么这么设计
对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】MySQL教程学习之面试题04_MySQL数据库cpu占用500%如何处理
【下一篇】MySQL教程学习之面试题02_MySQL中myisam与innodb的区别