在MySQLvarchar和char格式的数据之间的差异

差异

焦炭是类似的VARCHAR类型,但它们都存储在不同的ways.char检索具有固定的长度,和varchar是可变长度的字符类型,最大长度和是否保留尾部空间也不同。没有案例与转换是存储和检索过程中进行。

下表显示的结果保存各种字符串值字符后(4)和varchar(4)列,说明CHAR和varchar的区别:

值的字符(4)存储要求varchar(4)存储要求

4字节1字节

AB ''ab 4 bytes'ab 3字节

ABCD ''abcd 4 bytes'abcd 5字节

4 bytes'abcd ABCDEFGH ''abcd 5字节

从以上可以看出,char的长度是固定的,而无论多少数据你的商店,他将被固定在length.varchar是可变长度的,但他补充说,1字节的总长度,这是用来存储字符长度(如果申报的长度超过255,然后用2个字节),因此在实际应用中,用户可以根据自己的数据类型做。

注意,表中最后一行的值只适用于不使用严格模式的情况下。如果MySQL以严格的方式运行,则超过列长度的值不会被保存,并且会出现错误。

从字符检索的值(4)和varchar(4)列不一样由于尾部空间是删除从char列在检索检索。下面的例子来说明差异。


MySQL >创建测试表(varchar(4),B CHAR(4));

MySQL >插入测试值('ab ','ab);

MySQL >选择concat(A,连接+),从(B +测试);




结果如下:


concat(+连接)(B)
抗体+抗体




从以上可以看出,由于某种原因,焦具有固定长度,比处理速度的varchar快得多,但相对浪费存储空间,所以存储量小,但速度要求可以使用char类型和VARCHAR类型可以用来实现。

建议

MyISAM存储引擎推荐使用固定长度的数据列,而不是可变长度的数据列

InnoDB存储引擎推荐VARCHAR类型的使用

总结与分析:

如果文本字段的长度是固定的,如身份证号码,不要使用VARCHAR或nvarchar,应使用char或nchar。

支持多语种的网站,应该考虑使用Unicode nchar或nvarchar数据类型来减少字符转换问题

如果文本字段的长度不固定,如地址,它应该是varchar或nvarchar。除了节省存储空间,更有效地访问硬盘。