扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
下文主要给大家带来mysql数据类型的字符串解析,希望mysql数据类型的字符串解析能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
成都创新互联公司服务项目包括嫩江网站建设、嫩江网站制作、嫩江网页制作以及嫩江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,嫩江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到嫩江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!mysql数据类型——字符串char(m)和varchar(m)
char(m) 定长字符串类型 非 Unicode 字符
varchar(m) 变长字符串类型 非 Unicode 数据
说明:M为大可存储字节数 汉子占两个字节,通过指定m,来限制存储的大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。m必须小于该类型允许的大字符数。
一 char(m)类型
Char(m) 大字节数255 定长类型 m可取0-255 它的右边填充空格以达到指定长度,当检索到char值时,尾部的空格被删除掉 (性别 密码)
CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。
注意:比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。所以char类型存储的字符串末尾不能有空格,varchar不受此限制。
二 varchar(m)类型
Varchar(m) 大字节65535 可变长度 m取0-65535 只保存需要字符数,另加一个字节来声明长度 (用户名 文章标题)
VARCHAR 类型只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。比指定长度大的值将被截短。
变化一
MySQL 数据库的varchar类型在4.1以下的版本中的大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。
在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,
也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文件的大小。
变化二
MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是一个字符还是一个汉字,都存为2个字节 ,一般用作中文或者其他语言输入,这样不容易乱码 ;
varchar: 汉字是2个字节,其他字符存为1个字节 ,varchar适合输入英文和数字。
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,大大小是65532字节 ;
varchar(20)在Mysql4中大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同,具体有以下规则:
a) 存储限制
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此大长度不能超过65535。
b) 编码长度限制
字符类型若为gbk,每个字符最多占2个字节,大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
c) 行长度限制
导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。
三 区别:
1.内部存储机制:
char是固定长度,char(4)不管是存一个字符,2个字符或者4个字符(英文的),都将占用4个字节,不够的用空格补齐
varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。
2.char类型的字符串检索速度要比varchar类型的快
3.类型的选择
文字字段若长度固定,如:身分证号码,就不要用 varchar 或 nvarchar,应该用 char 或 nchar。
文字字段若长度不固定,如:地址,则该用 varchar 或 nvarchar。除了可节省存储空间外,存取硬盘时也会较有效率。
4性能选择
(1) varchar类型在更新环节上的系统开销是远大于char类型的,所以char适合字段频繁更新时的应用。
(2) varchar更节省磁盘空间
(3) 大数据量提取时varchar的磁盘IO消耗更低,意味着varchar综合查询性能会更好,所以实际应用中大数据量(多行)查询返回,varchar的查询性能比起char来要好出不少
(4)选择char和varchar会改变整体数据结构的算法以及存储方式。在mysql应用中,如已存在varchar字段,那么其它所有的char字段将以varchar方式存储。
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题
效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char
char和varchar可以有默认值,text不能指定默认值
对于以上关于mysql数据类型的字符串解析,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流