sql server2008数据类型

一、数字类型:

  1. 整数:int,bigint,smallint,tinyint
  2. 位数据类型:bit
  3. 货币数据类型:money,smallmoney
  4. 十进制小数类型:decimal,numerice
  5. 浮点数据类型:float,real
  • 所有的数值都有精度,精度是指有效数字位数,小数位数是指小数点右边的数字个数。例如:12345.6789的精度为9,小数位数是4。
  • 数字数据类型的长度是存储此数值所占的字节数。例如:int类型最多可以存储10位数,用4个字节来存储。(一个数子占7/8的字节,就是7个二进制位,第八个有其他用,比如奇偶校验。一个汉字占两个字节。)
  • 选择整数数据类型,默认考虑int,数据很大用bigint,很小用smallint,位数不超过255且都是正数时,才能使用tinyint类型。
  • 位类型数据(bit),只能存储0、1或null,长度为1字节,常用条件逻辑判断。
  • 货币数据类型money和smallmoney的差别在于存储字节的大小和取值范围不同。他们的精度和小数位数时确定的。他们与其他数据类型的不同之处在于:
    • 他们表示货币数据值,因此可以在数字前面加上“$”作为货币符号;
    • 他们的小数位数最多为4为,超过时自动四舍五入
  • 十进制小数类型,精度高,且没有误差。两种类型除了名称不同其余是等价的。decimal由整数和小数两部分构成,结构如下:
    • decimal(p, s),p代表精度,s代表小数位数。数据存储长度随精度变化而变化。
  • real和float通常用于科学计算,可以存储非常大的数字。

二、字符数据类型

  1. ANSI字符:char,varchar、text
  2. Unicode字符:nchar,nvarchar,ntext
  • char类型存储字符数据,每个字符占一个字节,要给数据定最大长度,格式为:char(n)
    • 如果没有指定n的大小,则默认值为1,最长可以容纳8000个字符;
  • varchar类型定义和char相同,区别如下:
    • 首先明确的是,char的长度是不可变的,而varchar的长度是可变的,

    • 定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,

    • char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

    • char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据

  • 当数据有可能涉及到英语之外的其他语言时,应该使用Unicode字符编码。每一个Unicode字符需要两个字节存储,因此,Unicode字符集则有65536个不同的字符。使用Unicode字符可以再表的一个列中同事出现中文、英文、法文等,而不会出现编码冲突。通常用    N'Unicode字符'

  • nchar和nvarchar分别用于存储固定长度和可变长度的Unicode字符数据;

  • text和ntext,分别对应存储长度很大的ANSI字符和Unicode字符数据。微软公司建议,用户应该避免使用text和ntext数据类型,而使用varchar和nvarchar存储打文本数据。

三、日期时间数据类型(date,time,datetime,datetime2,smalldatetime,datetimeoffset)

  • date数据类型只存储日期类型,不存储时间,取值从0001-01-01到9999-12-31。引入date类型,克服了datetime类型中既有日期又有时间的缺陷
  • time数据类型与date类型相似,只存储时间数据,范围从00:00:00.0000000到23:59:59.9999999

四、二进制数据类型

二进制数据类型用于表示位数据流,包括binary(固定长度)、varbinary(可变长度)和image三种。

  • binary用于存储固定长度的二进制数据;
  • varbinary用于存储可变长度的二进制数据,如果存储的二进制大于8000字节,就必须使用varbinary(max)数据类型;
  • image数据类型用于存储图像信息,2008中,只有在数据字节数超过8kb的情况下,才使用image数据类型,其他情况应使用varbinary(max)代替,其中max最大可以达到2的31次方-1;
  • 当二进制数据存储到表中时,可以使用SELECT语句来检索。但检索结果是16进制数据格式来显示。

五、其他数据类型

  1. timestamp时间戳数据类型与时间、日期无任何关系。timestamp的值是二进制,表明数据库中的数据修改发生的相对顺序。可以使用@@DBTS函数返回数据库的时间戳值;
  2. sql_variant类型:用于存储SQL Server 2008支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variantl类型)的值。数据列类型为

 

 

 

 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值