一、准备知识:
unicode编码:英文字母和汉字都用两个字节(数据存在汉字的时候建议使用)
非unicode编码:英文用一个字节,汉字有的时候不能正确显示
二、字符型
char: 定长,非unicode编码,默认的长度是1,最大长度8000;
nchar: 定长,unicode编码,默认的长度是1,最大的长度是4000;
varchar: 变长,非unicode编码,默认的长度是1,最大的长度是8000;
nvarchar: 变长,unicode编码,默认的长度是1,最大长度4000
注:这里的变长并不是只要输入的数据没有超过最大的长度就可以随意增加的,而是在设置的长度中随意改变的
For example:
varchar:
设置了a varchar(10),这个时候输入a=’33’,这个时候系统动态的分配两个字节的空间,剩下的8个字节就节省了,在数据库中33后面是不会有空格的。
但是要是输入11个字节的数据就不行了,所以说变长只是在设置的长度里面进行的变长
char:
设置了a char(10),这个时候输入a=’33’,这个时候系统分配十个个字节的空间,剩下的8个字节就浪费了,在数据库中33后面是填充空格的
char的好处:在确定长度的情况下用char、nchar,因为查询的速度比变长的快得多。比如存储学号就适合char
三、文本类型:
text:非unicode编码,不能设置长度,最大长度2^31- 1 (2,147,483,647)
ntext:unicode编码,不能设置长度,最大长度2^30- 1 (1,073,741,823)
四、数字类型:
bit:不能设置长度,范围是0或1,就是只能存储一个数字,不是1就是0,输入的数据(只能是数字)不是1和0的全部默认是1
int:不能设置长度,范围-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
bigint:不能设置长度,
范围-2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)
五、时间类型
datetime:不能设置长度 ,存放时间,一般和getdate()函数(自动获取当前时间的函数)配合使用