MySQL 拾穗者 四 字段类型

对于程序中的string型字段,SQLServer中有char, varchar, nchar, nvarchar四种类型来对应:

1,定长和变长

MySQL 拾穗者 四 字段类型_第1张图片
如意金箍棒.png
定长就是长度固定的,当输入的数据长度没有达到指定的长度时候,将自动以英文空格在其后填充, 使得长度达到相应的长度

有var前缀的,表示实际存储空间是变长的,varchar, nvarchar变长字符数据不会使用英文空格填充,text实际存储的也是变长

2,unicode, 和非 unicode

MySQL 拾穗者 四 字段类型_第2张图片
通天塔.png
数据库中,英文字符只需要一个字节存储,汉字和其他非英文字符,需要两个字节存储,

如果英文和汉字同时存在,由于占用空间不同,容易造成混乱,导致读取出来的字符串是乱码

unicode字符集是为了解决字符集不兼容的问题产生的,所有的字符都使用两个字节表示,前缀n表示unicode

3,基于以上两点查看字段容量

char, varchar  最多8000个英文, 4000个汉字

nchar, nvarchar可以存储4000个字符,无论是英文还是汉字

4,使用

如果数据量非常大,能百分百确定长度且保存只是ANSI字符,使用char

能确定长度不一定是ANSI字符,使用nchar

对于超大数据,如文章内容,使用nText

对于其他的通用nvarchar


char, varchar, nchar, nvarchar 特点比较:

char, 存储定长数据很方便,字段上的索引效率极高,  

varchar,存储变长数据, 存储效率没有char 高, varchar类型的实际长度是它的值的实际长度+1, 使用一个字节存储长度

从空间上考虑,用**varchar**合适;从效率上考虑,用**char**合适,关键是根据实际情况找到权衡点。

text,存储的是可变长度的非unicode数据,最大长度为2**31 - 1个字符

你可能感兴趣的:(MySQL 拾穗者 四 字段类型)