在个人机房重构的时候,我们要自己设计建造一个数据库,但是当开始写数据库设计说明书的时候,才发现我们对于每个定义的字段的数据类型还是傻傻的分不清楚,面对如此多的选择,我还是决定先好好的补补这些知识吧!
一般来说,在机房收费系统中,我们可以将所用到的数据类型总体分为三种:
1)字符: char,varchar,nchar,nvarchar
2)数字: int,numeric,float
3)时间: datetime,date,time
char: 固定长度,存储ANSI字符,不足的补英文半角空格。
nchar: 固定长度,存储Unicode字符,不足的补英文半角空格
varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar:可变长度,存储Unicode字符,根据数据长度自动变化。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar[(n)]:长度为 n 个字节的可变长度且非 Unicode的字符数据。n 必须是一个介于 1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
注意: 从存储方式上,nvarchar是按字符存储的,而 varchar是按字节存储的。ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。
①如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。
②如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。
③如果不确定存储的数据长度,存储只有英文、数字的最好用varchar
④如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;
⑤如果你做的项目可能涉及不同语言之间的转换,建议用nvarchar。从存储量上考虑, varchar比较节省空间,因为存储大小为字节的实际长度,而 nvarchar是双字节存储;存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。
date: 表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。