char(n),varchar(n)都表示该字符串最多能存储n个字符,这里的字符既可以是英文,数字,特殊字符,也可以是汉字(每个汉字也是算一个字符奥),当存储的字符串大于n时,都会出现异常,也就是不能存入大于n的字符串。
二者的区别在于当存储的字符串长度小于n时,char(n)会自动在右侧填充空格以达到n的字符串长度,但varchar(n)则会正常保存原字符串长度。
但需要注意的是,char(n)中填充的空格是没有意义的,例如比较两个char的值时,填充的空格会被去掉,在转换成其他字符串类型时,后面的空格会被去掉,char(n)后面填充的空格在查询的时候,其实用户也是看不到的(因为你没法看到空格啊),只有在用concat()连接函数在char(n)后再连接别的内容时会被看到。