在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。除了节省存储空间,更有效地访问硬盘。