定长或变长
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,好比varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。数据库
Unicode或非Unicode
数据库中,英文字符只须要一个字节存储就足够了,但汉字和其余众多非英文字符,则须要两个字节存储。若是英文与汉字同时存在,因为占用空间数不一样,容易形成混乱,致使读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它全部的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,好比nchar,nvarchar,这两种类型使用了Unicode字符集。大数据
基于以上两点来看看字段容量:spa
char,varchar | 最多8000个英文,4000个汉字 |
nchar,nvarchar | 可存储4000个字符,不管英文仍是汉字 |
总结:若是含有中文字符,用nchar/nvarchar,若是纯英文和数字,用char/varcharcode
若是数据量很是大,又能100%肯定长度且保存只是ansi字符,那么char 字符串
能肯定长度又不必定是ansi字符或者,那么用nchar; table
对于超大数据,如文章内容,使用nText 乱码
其余的通用nvarchar总结