MySQL中VARCHAR与CHAR格式数据的区别
CHAR与VARCHAR类型类似,但它们保存和检索的方式不同。CHAR有固定的长度,而VARCHAR属于可变长的字符类型。它们最大长度和是否尾部空格被保留等方面也不同。在存储和检索过程中不进行大小写转换。
下面的表格显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别
值 CHAR(4) 存储需求 VARCHAR(4) 存储需求
'' ' ' 4个字节 '' 1个字节
'ab' 'ab ' 4个字节 'ab' 3个字节
'abcd' 'abcd' 4个字节 'abcd' 5个字节
'abcdefgh' 'abcd' 4个字节 'abcd' 5个字节
从上面可以看得出来CHAR的长度是固定的,不管你存储的数据是多少他都会都固定的长度。而VARCHAR则处可变长度但他要在总长度上加1字节,这个用来存储字符长度(如果声明的长度超过255,则使用2个字节)。所以实际应用中用户可以根据自己的数据类型来做。
请注意,上表中一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度的值不被保存,并且会出现错误。
从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时从CHAR列删除了尾部的空格。通过下面的例子说明差别
mysql> CREATE TABLE test(a VARCHAR(4), b CHAR(4));
mysql> INSERT INTO test VALUES ('ab ', 'ab ');
mysql> SELECT CONCAT(a, '+'), CONCAT(b, '+') FROM test;
结果如下
CONCAT(a, '+') CONCAT(b, '+')
ab + ab+
从上面可以看出来,由于某种原因CHAR有固定长度,所以在处理速度上要比VARCHAR快很多,相对浪费存储空间,所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之可以用VARCHAR类型来实现。
建议
MyISAM存储引擎 建议使用固定长度,数据列代替可变长度的数据列
INNODB 存储引擎 建议使用VARCHAR类型
分析:
文字字段若长度固定,如身分证号码,就不要用 varchar 或 nvarchar,应该用 char 或 nchar。
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题
文字字段若长度不固定,如地址,则该用 varchar 或 nvarchar。除了可节省存储空间外,存取硬盘时也会较有效率
机器人技术
- 800多家中国机器人企业近半无产品
- 看看机器人在和你抢什么
- 马化腾、李彦宏等科技企业大佬们在贵阳大数据
- 机器人投入汽车产业园 探索机器人产业链
- 特斯拉 Cybertruck 电动皮卡换上黑色外衣,有望为
- 沁峰如何成为冲压机器人细分赛道国家专精特新
- 运动机器人智障了吗?
- Rivian 将投资 50 亿美元在佐治亚州建造电动汽车工
- 调查发布 - 制造业在疫情防控常态化下突围——
- 未来工业机器人的市场什么样的变化
- 进博会特斯拉展台最全预测 沉浸式体验智能制造
- 美国将中国电动汽车关税提高到 100%,极星 CEO 对
- DeepMind 联合创始人:交互式 AI 才会“改变人类”
- 把握发展趋势 推动机器人产业高质量发展
- AI入侵教师职业,这五类产品发展迅猛
- 他们用AI和食用植物创造“人工肉食”,你想尝尝