加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer 数据类型

发布时间:2020-12-12 16:07:52 所属栏目:MsSql教程 来源:网络整理
导读:在操作数据库时时常碰到?char??varchar??binary??varbinary ? 固定长度存储? char按照字符存储????不同的编码每个字符对应的字节是不同?? ????????????????????gbk编码方式,每个字符占用2个字节的空间, ????????????????????????utf8编码方式,每个字符占

在操作数据库时时常碰到?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??会区分大小写?按字节比较比字符简单快速

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

?

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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读