Transact-SQL数据类型(文本/图形/日期和时间/货币/特定类型)

4.2.6 文本和图形数据类型

文本和图形数据类型是用于存储大量的非Unicode和Unicode字符以及二进制数据的固定长度和可变长度数据类型,包括text型、ntext型和image型。

l          text型是用于存储大量非Unicode文本数据的可变长度数据类型,其容量理论上为231-1(2 147 483 647)个字节。在实际应用时需要视硬盘的存储空间而定。

在SQL Server 2000以前的版本中,数据库中一个text对象存储的实际上是一个指针,它指向一个以8KB为单位的数据页。这些数据页是动态增加并被逻辑连接起来的。在SQL Server 2000中,则将text和image型的数据直接存放到表的数据行中,而不是存放到不同的数据页中。这样就减少了用于存储text和image类型的空间,并相应减少了磁盘处理这类数据的I/O数量。

l          ntext型是用于存储大量Unicode文本数据的可变长度数据类型,其理论容量为230-1(1 073 741 823)个字节。ntext型的其他用法与text型基本一样。

l          image型是用于存储大量二进制数据的可变长度数据类型,其理论容量为231-1 (2 147 483 647)个字节。Image型数据的存储模式与text型数据相同,通常用来存储图形等OLE对象。在输入数据时,与输入二进制数据一样,必须在数据前加上起始符号“0X”作为二进制标识。


4.2.7 日期和时间数据类型

日期和时间数据类型代表日期和一天内的时间,包括datetime型和smalldatetime型。

l          datetime型是用于存储日期和时间的结合体的数据类型。它可以存储从公元1753年1月1日零时起到公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达3%秒。

datetime型数据所占用的存储空间为8个字节,其中前4个字节用于存储1900年1月1日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后4个字节用于存储从此日零时起所指定的时间经过的毫秒数。如果在输入时省略了时间部分,则系统将默认为12:00:00:000AM;如果省略了日期部分,系统将默认为1900年1月1日。

l          smalldatetime型与datetime型相似,但其存储的日期时间范围较小,从1900年1月1日到2079年6月6日。它的精度也较低,只能精确到分钟级,其分钟个位上的值是根据秒数并以30秒为界四舍五入得到的。

Smalldatetime型数据所占用的存储空间为4个字节,其中前两个字节存储从基础日期1900年1月1日以来的天数,后两个字节存储此日零时起所指定的时间经过的分钟数。

4.2.8 货币数据类型

货币数据类型用于存储货币或现金值,包括money型和smallmoney型。在使用货币数据类型时,应在数据前加上货币符号,以便系统辨识其为哪国的货币,如果不加货币符号,则系统默认为“¥”。

l          money型是一个有4位小数的decimal值,其取值从-263(-9 223 372 036 854 775 808) ~263-1(+9 223 372 036 854 775 807),精确到货币单位的千分之十。存储大小为8个字节。

l          smallmoney型货币数据值介于-2 147 483 648~+2 147 483 647之间,精确到货币单位的千分之十。存储大小为 4 个字节。

4.2.9 特定数据类型

SQL Server 2000中包含了一些用于数据存储的特殊数据类型,包括timestamp型和 uniqueidentifier型。

l          timestamp数据类型提供数据库范围内的惟一值,它相当于binary(8)或varbinary(8),但当它所定义的列在进行更新或插入数据行操作时,此列的值会自动更新。每个数据库表中只能有一个timestamp型数据列。如果表中的列名为“timestamp”,则该列的类型将被自动定义为timestamp型。

l          uniqueidentifier数据类型用于存储一个16位的二进制数据,此数据称为全局惟一标识符(Globally Unique Identifier,GUID)。此数据由SQL Server 2000的NEWID()函数产生,在全球各地的计算机经由此函数产生的数字不会相同。

4.2.10 用户自定义数据类型

sysname数据类型是系统提供给用户的,便于用户自定义的数据类型。该数据类型被定义为NVARCHAR(128),即它可以存储128个Unicode字符或256个一般字符。

4.2.11 新增数据类型

前面讲到过SQL Server 2000新增了3种数据类型:bigint型、sql_variant型和table型。其中bigint型已经在整数类型中介绍过了。

l          sql_variant型是一种存储SQL Server支持的各种数据类型(text、ntext、timestamp 和sql_variant除外)值的数据类型。此数据类型大大方便了SQL Server的开发工作。

l          table型用于存储对表或视图处理后的结果集。table数据类型不适用于表中的列,而只能用于Transact-SQL变量和用户定义函数的返回值。这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便快捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值