SqlServer -- char varchar、nchar、nvarchar
一、char与varchar
列如:
char(10)
varchar(10)
写入“abc”
char 损耗了硬盘10字节 = “abc”长度 + 7个空字符
varchar损耗了硬盘3字节 = “abc”长度
var:可变长度,会根据实际存储数据的大小动态重新分配存储空间。
不带var:固定长度,存储3个字符也是要占用10个字节的,会自动补7个空格。
注意:如果存储的数据超过了10个字节,那么无论是固定长度还是可变长度都会报错的。
理论:
前缀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)
其它:
Bit类型在管理器上只能用true和false 在写程序代码的时候只能用1和0