char和varchar都是用于在数据库中存储字符串的数据类型。它们之间的主要区别在于存储空间的使用方式
一.区别
char类型的长度是固定的,而且在存储时会自动在结尾添加空格来将字符串填满指定的长度。
varchar的长度是可变的,它只会存储实际的字符串内容,不会填充空格。varchar比char节省空间,但是在效率上比char稍差些。
二.优缺点
char的优点是定长的字符串类型,减少内存碎片,并且无需额外的磁盘空间去存储长度信息。但是他的缺点是会删除列末尾的空格信息。例如,存储身份证号(固定长度)、存储订单号(可变长度)、存储国家编码(固定长度),这些都适合用char。
varchar的优点是变长的字符串类型,兼容性更好;但是同时也会带来一些问题,如使用varchar可能会产生内存碎片、varchar会额外需要1到2个字节存储长度信息、以及update语句可能会导致页分裂等。例如,存储产品描述(可变长度)、存储用户地址(可变长度)、存储用户名称(可变长度),这些都适合用varchar。