数据库设计时遇到的几种数据类型
背景
机房合作时,我负责数据库设计部分,前两次的数据库遇到数据类型时就是蒙的,但是一直也没有去认真学习一下,这次果然还是绕不过去。所以决定这次把这个坑给填上,以便方便和我有同样状况的同志可以顺利地走过这一段路程。
前提
在讨论数据类型时,使用了精度、小数位数和长度3个概念,前两个概念是针对数值型数据的。
精度:指数值数据中所存储的十进制数据的总位数。
小数位数:指数值数据中小数点右边可以有的数字位数的最大值。例如数值数据3890.587的精度是7,小数位数是3.
长度:指存储数据所使用的字节数。
内容
机房这个系统,整体上,我涉及到了如下几种数据类型:
1. 字符型 char,varchar和 Unicode字符型nchar 和 nvarchar
字符型数据用于存储字符串,字符串中可包括字母、数字和其他特殊符号(如#,@等)。在输入字符串时,需将串中的符号用单引号或双引号括起来,如'abc'、"Abd<cdf"。
char指固定长度,举例栗子:当表中的字段定义为char(8)时,若实际存储的串长度不够8,则在串的尾部会自动添加空格以达到长度8;而若输入的长度超出8时,则超出的部分被截断,只保留8位。
varchar指变长字符数据类型,如varchar(8),指字符串课达到的最大长度是8,但不一定是8.
使用varchar比char节省空间,但char比varchar的处理效率高。
Unicode字符型包括nchar和nvarchar两类。这里它们的用法同char和varchar的使用非常相似,不同的是使用Unicode字符集,而后者使用ASCII字符集。
也许这样叙述您不容易理解,那就站在巨人的肩膀上,发现了我师傅也曾比较过它们,而且非常清晰,这里是原文链接:我师傅张欢的原文地址,为了方便您看,我这里直接截取了图片:
2. Bit
这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。我们这里的性别设定只有男和女两种结果:0 男 和 1 女;
3. 日期时间类型datetime
datetime类型数据长度为8字节,日期和时间分别使用前后4个字节表示。
4. 精确数值型Decimal(10,2)
表示数值*有10位数,其中整数10-2=8位,小数2位。