在操作数据库时时常碰到 char  varchar  binary  varbinary

 

固定长度存储 

char按照字符存储    不同的编码每个字符对应的字节是不同  

                    gbk编码方式,每个字符占用2个字节的空间,

                        utf8编码方式,每个字符占用3个字节的空间  

binary保存二进制字符串,它保存的是字节而不是字符,没有字符集限制
                        binary(8)可以保存8个字符,每个字符占1个字节,共占8个字节

 

变长存储   varchar(36) 以字符存储  最大长度36  不够36 则按实际长度存储

          varbinary   以字节存储  在存储时需要将字符转换位字节

                                    convert(VARBINARY(36),'dfdfsdsf')

                                     否则直接把String类型转换为VARBINARY 报错

          对于经常改变的值,char优于varchar,原因是固定长度的行不容易产生碎片。
          很短的列char优于varchar,原因是varchar需要额外一个或两个字节存储字符串的长度。

 

查询时的区别:char  varchar      查询时会把数据库中的值 和条件前后的空格自动去掉再匹配

                                 不区分大小写  

              binary  varbinary  会区分大小写 按字节比较比字符简单快速

                                    并不会去掉空格(原因结尾使用\0填充,而不是空格 )  

 

Number(19,3) SQL 数据库默认长度

 

SQLServer  常用类型

 

1.char,varchar,nchar,nvarchar

   char性能好;varchar节省空间;选择方法:10个字节以上的用varchar

   n类型的占用空间大,性能低,如果不准备存中文或中亚文字则尽量避免使用。

   尤其向类似工号的字段更不要使用n类型,首先它不会存入中文,其次它可能作为索引,此时对性能的影响就更大。

2.datetime和smalldatetime 

   datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到毫秒。 

   smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。

3.bigint,int,smallint,tinyint和bit 

   bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 

   int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 

   smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。 

   tinyint:从0到255的整数数据。 

   bit:1或0的整数数据。

 

   首先int,空间占用合适,运算速度快;(2147,...,...2个多亿)

   如果非常在意空间的话,考虑tinyint

   超大应用场合,考虑bigint

4.decimal和numeric 

   这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。 

5.float和real 

   float:从-1.79^308到1.79^308之间的浮点数字数据。   

   real:从-3.40^38到3.40^38之间的浮点数字数据。在SQL Server中,real的同义词为float(24)。 

6.money,smallmoney

   尽量考虑用decimal替代,原因:性能稍稍好一些;相对其它数据库兼容性好。

   money的好处是可以用到某些货币运算函数。

   float类型尽量少用,性能不好,精度不高,一般只用于科学计算。

7.text/p_w_picpath  

   考虑到维护方便、效率以及程序开发的方便性,最好不用,即不将其存入数据库中;采用varchar指向其相应的存储路径

 参考:http://www.cnblogs.com/fttbfttb/articles/1510386.html

       http://blog.sina.com.cn/s/blog_4de07d5e01010jc4.html