1.数据库中的varchar(n)数据类型.相信很多小白都遇到过这种情况,就是什么时候用varchar(),什么时候用char().
(1)VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符数值小于255的字符,mysql5.0之前是varchar支持最大255。

(2)假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。

(3)当建立站点时,会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,不需要为剪掉数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当数据库很大时,这种内存和磁盘空间的节省会变得非常重要.

(4)虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡。

(5)注意:varchar(n)是会在255个字符以下开辟n+1个字节空间,在255个字符以上开辟n+2个字节空间.它的可变性是指varchar(n)可以输入字节长度为<=n的字符数据,例如varchar(12),则你可以输入小于等于12字节长度的字符串.
注意了,只能是小于等于,不可以是大于.它的作用是在你输入的字符串长度小于n时,系统是会自动去掉多余的字节空间,以确保节省空间.这点是char()做不到的,因为当你输入的字符串长度小于n时,它是不会自动给你去除多余的字节空间的.

2.综上所述,选择varchar的条件为(1)当你想要节省空间时(2)当你无法明确字符串长度时.如学生姓名,有两个字的,也有三个字的,因此我们说对于学生姓名这种,无法明确其字符串长度的,我们可以选择varchar.
同样选择char的条件为(1)当所输入的字符串数据,字符长度很明确时,如学生学号,都是由12个数字构成.(2)当你想要更快的运算速度时.因为char类型的运算速率要比varchar更高.