1个字节等于8个bit位,每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节书不太一样
char和varchar是一样的字符型,
  不同在于,varchar比char更灵活,精确,且不占内存空间, 当你取同样的字符时,char会在该字符后面加上空格, 而varchar则只取得这个字符,比如有字段5,用varchar从该字段 中取aa时,你取得的是"aa",如果用char,则取得的是"aa   ", char会在后面用空格补齐5个字段。 所以,varchar比char更精确,但,varchar的速度却比char慢。 因为char是直接取得全部,而varchar是精确的去取得你要的字符 
  varchar是处理非unicode数据,它处理的数据字节的长度是字符实际的长度. nvarchar处理unicode数据,它处理的数据字节的长度是字符个数的两倍. 就是说,汉字一个字占两个字符,英文字母一个占一个字符,用varchar的话它是按这样计算的, 但是你用nvarchar的话它是把汉字和字母都当作两个字符,来得到字符长度.这里,char和 varchar是一样的. 所以,nvarchar能处理的英文字符数比varchar少了一半. 另外, CHAR,NCHAR 有固的定长,查询速度快,但占用空间大, VARCHAR,NVARCHAR,TEXT 没有固定定长,占用空间小,查询速度慢; 你看到的前面加个N其实就是说明它是要处理unicode数据的.