您的位置:首页 > 其它

GET和POST的区别

2013-04-16 12:35 218 查看
在操作数据库时时常碰到 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/image
考虑到维护方便、效率以及程序开发的方便性,最好不用,即不将其存入数据库中;采用varchar指向其相应的存储路径
参考:http://www.cnblogs.com/fttbfttb/articles/1510386.html
http://blog.sina.com.cn/s/blog_4de07d5e01010jc4.html

本文出自 “不落西” 博客,请务必保留此出处http://375163948.blog.51cto.com/7498815/1266424
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: