分享更有价值
被信任是一种快乐

Mysql中varchar与char的区别有哪些

文章页正文上

这篇文章给大家分享的是有关Mysql中varchar与char的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql中varchar与char的区别以及varchar(30)中的30代表的涵义
(1)varchar与char的区别
varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);
char存储定长(rightpadding),读取时会截断末尾空格,长度最大为255字符;
char与varchar都是用来存储字符串的,只是他们的保存方式不一样,char有固定的长度,而varchar属于可变长的字符类型。
char是一种固定长度的类型,varchar则是一种可变长度的类型。
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足。(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。
建议:
myisam存储引擎建议使用固定长度,数据列代替可变长度的数据列。
memory存储引擎目前都使用固定数据行存储,因此无论使用char,varchar列都没有关系。
Innodb存储引擎建议使用varchar类型。
在MySQL中用来判断是否需要进行对数据列类型转换的规则:
1.在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的。
2.只要数据表里有一个数据列的长度是可变的,那么各数据行的长度都是可变的。
3.如果某个数据表里的数据行的长度是可变的,那么为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型。
对于MyISAM表,尽量使用char,对于那些经常需要修改而容易形成碎片的myisam和isam免费主机域名数据表就更是如此,它的缺点就是占用磁盘空间;
对于InnoDB表,因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分(所有数据行共用一个表头部分,这个表头部分存放着指向各个有关数据列的指针),所以使用char类型不见得会比使用varchar类型好。事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利。
(2)varchar(30)中30的涵义
最大存储30个字符;varchar(5)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为orderbycol采用fixed_length计算col长度(memory)引擎一样。
Forexample,avarchar(255)columncanholdastringwithamaximumlengthof255characters(字符而非字节),对于latin1,‘abcd’的L为4,存储需要5个字节;对于ucs2(双字节字符),则需要10个字节存储(最大长度为510>255,故需要额外2个字节)
(3)int(20)中20的涵义
20表示最大显示宽度为20,但仍占4个字节存储,存储范围不变;
createtableint_test(aintzerofillNOTNULLauto_increment,PRIMARYKEY(a));
createtableint_test_4(aint免费主机域名(4)zerofillNOTNULLauto_increment,PRIMARYKEY(a));
select*fromint_test;
+————+
|a|
+————+
|0000000001|
|0000000002|
|0000000003|
|2147483648|
+————+
select*fromint_test_4;
+————+
|a|
+————+
|0001|
|0002|
|0003|
|2147483648|
+————+
(4)为什么MySQL这样设计?
对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和结算均一样。感谢各位的阅读!关于“Mysql中varchar与char的区别有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

相关推荐: 分析Oracle中表空间、表、索引的迁移

这篇文章主要介绍“分析Oracle中表空间、表、索引的迁移”,在日常操作中,相信很多人在分析Oracle中表空间、表、索引的迁移问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析Oracle中表空间、表、索引的迁移”的疑惑有所帮…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册