一、char与varchar
char(10) varchar(10)
写入“abc”
char 损耗了硬盘10字节 = “abc”长度 + 7个空字符
varchar损耗了硬盘3字节 = “abc”长度
varchar:可变长度,会根据实际存储数据的大小动态重新分配存储空间。
char:固定长度,存储3个字符也是要占用10个字节的,会自动补7个空格。
注意:如果字段字符长度固定建议使用char类型,性能更好。
理论:
前缀N就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。
非Unicode码(例如ASCII码),英文字符需要一个字节存储,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。
Unicode(统一码)就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
二、char与nchar
char()不带n的数据类型,存储中文等双字节字符,占用2个字节;存储英文,数字等每个字符占用1个字节。
nchar() 带n的,无论存储中文还是英文、数字等,每个字符都是占用两个字节。
注意:不带n的这些数据类型,长度最常可以设置为8000,而带n的这些数据类型,长度最长可以设置为4000,实际存储空间相同,既8000字节。
char(8000) varchar(8000) nchar(4000) nvarchar(4000)
N前缀:N代表转换为Unicode格式
insert into students1(name,birtiday) values(N'科比',1994-01-01)