VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > T-SQL >
  • sql语句大全之SQL Server 2008数据类型(2)

 SQL Server 2008数据类型(2
如decimal和numeric等数值数据类型可存储小数点右边或左边的变长位数。Scale是小数点右边的位数。精度(Precision)定义了总位数,包括小数点右边的位数。例如,由于14.88531可为numeric(7,5)或decimal(7,5)。如果将14.25插入到numeric(5,1)列中,它将被舍入为14.3。
3. 近似数值数据类型
这个分类中包括数据类型float和real。它们用于表示浮点数据。但是,由于它们是近似的,因此不能精确地表示所有值。
float(n)中的n是用于存储该数尾数(mantissa)的位数。SQL Server对此只使用两个值。如果指定位于1~24之间,SQL就使用24。如果指定25~53之间,SQL就使用53。当指定float()时(括号中为空),默认为53。
表1-3列出了近似数值数据类型,对其进行简单描述,并说明了要求的存储空间。
表1-3
数 据 类 型 描    述 存 储 空 间
float[(n)] –1.79E+308~–2.23E–
308,0,2.23E–308~1.79E+308
N< =24-4字节
N> 24-8字节
real() –3.40E+38~–1.18E–
38,0,1.18E–38~3.40E+38
4字节
 

注意:
real的同义词为float(24)。
4. 二进制数据类型
如varbinary、binary、varbinary(max)或image等二进制数据类型用于存储二进制数据,如图形文件、Word文档或MP3文件。其值为十六进制的0x0~0xf。image数据类型可在数据页外部存储最多2GB的文件。image数据类型的首选替代数据类型是varbinary(max),可保存最多8KB的二进制数据,其性能通常比image数据类型好。SQL Server 2008的新功能是可以在操作系统文件中通过FileStream存储选项存储varbinary(max)对象。这个选项将数据存储为文件,同时不受varbinary(max)的2GB大小的限制。
表1-4列出了二进制数据类型,对其作了简单描述,并说明了要求的存储空间。
表1-4
数 据 类 型 描    述 存 储 空 间
Binary(n) N为1~8000十六进制数字之间 n字节
Image 最多为231–1
(2 147 483 647)十六进制数位
每字符1字节
Varbinary(n) N为1~8000十六进制数字之间 每字符1字节
+2字节额外开销
Varbinary(max) 最多为231–1
(2 147 483 647)十六进制数字
每字符1字节
+2字节额外开销
 

5. 日期和时间数据类型
datetime和smalldatetime数据类型用于存储日期和时间数据。smalldatetime为4字节,存储1900年1月1日~2079年6月6日之间的时间,且只精确到最近的分钟。datetime数据类型为8字节,存储1753年1月1日~9999年12月31日之间的时间,且精确到最近的3.33毫秒。
SQL Server 2008有4种与日期相关的新数据类型:datetime2、dateoffset、date和time。通过SQL Server联机丛书可找到使用这些数据类型的示例。
datetime2数据类型是datetime数据类型的扩展,有着更广的日期范围。时间总是用时、分钟、秒形式来存储。可以定义末尾带有可变参数的datetime2数据类型--如datetime2(3)。这个表达式中的3表示存储时秒的小数精度为3位,或0.999。有效值为0~9之间,默认值为3。
datetimeoffset数据类型和datetime2数据类型一样,带有时区偏移量。该时区偏移量最大为+/-14小时,包含了UTC偏移量,因此可以合理化不同时区捕捉的时间。
date数据类型只存储日期,这是一直需要的一个功能。而time数据类型只存储时间。它也支持time(n)声明,因此可以控制小数秒的粒度。与datetime2和datetimeoffset一样,n可为0~7之间。
表1-5列出了日期/时间数据类型,对其进行简单描述,并说明了要求的存储空间。
表1-5
数 据 类 型 描    述 存 储 空 间
Date 9999年1月1日~12月31日 3字节
Datetime 1753年1月1日~9999年12月31日,
精确到最近的3.33毫秒
8字节
Datetime2(n) 9999年1月1日~12月31日
0~7之间的N指定小数秒
6~8字节
Datetimeoffset(n) 9999年1月1日~12月31日
0~7之间的N指定小数秒+/–偏移量
8~10字节
SmalldateTime 1900年1月1日~2079年
6月6日,精确到1分钟
4字节
Time(n) 小时:分钟:秒.9999999
0~7之间的N指定小数秒
3~5字节
 

6. 其他系统数据类型
还有一些之前未见过的数据类型。表1-6列出了这些数据类型。
表1-6
数 据 类 型 描    述 存 储 空 间
Cursor 包含一个对光标的引用和
可以只用作变量或存储过程参数
不适用
Hierarchyid 包含一个对层次结构中位置的引用 1~892字节+2
字节的额外开销
SQL_Variant 可能包含任何系统数据类
型的值,除了text、ntext、
image、timestamp、xml、
varchar(max)、nvarchar(max)、
varbinary (max)、sql_variant以
及用户定义的数据类型。最大尺
寸为8000字节数据+16字节
(或元数据)
8016字节
Table 用于存储用于进一步处理的数
据集。定义类似于Create Table。
主要用于返回表值函数的结果集,
它们也可用于存储过程和批处理中
取决于表定
义和存储的行数
Timestamp or
Rowversion
对于每个表来说是唯一的、自
动存储的值。通常用于版本戳,
该值在插入和每次更新时自动改变
8字节
Uniqueidentifier 可以包含全局唯一标识符
(Globally Unique Identifier,
GUID)。guid值可以从Newid()
函数获得。这个函数返回的值对
所有计算机来说是唯一的。
尽管存储为16位的二进制值,
但它显示为char(36)
16字节
XML 可以以Unicode或非Unicode形式存储 最多2GB
 

注意:
cursor数据类型可能不用于Create Table语句中。
hierarchyid列是SQL Server 2008中新出现的。您可能希望将这种数据类型的列添加到这样的表中--其表行中的数据可用层次结构表示,就像组织层次结构或经理/雇员层次结构一样。存储在该列中的值是行在层次结构中的路径。层次结构中的级别显示为斜杠。斜杠间的值是这个成员在行中的数字级别,如/1/3。可以运用一些与这种数据类型一起使用的特殊函数。
XML数据存储XML文档或片段。根据文档中使用UTF-16或是UTF-8,它在尺寸上像text或ntext一样存储。XML数据类型使用特殊构造体进行搜索和索引。第15章将更详细地介绍这些内容。
7. CLR集成
在SQL Server 2008中,还可使用公共语言运行库(Common Language Runtime,CLR)创建自己的数据类型和存储过程。这让用户可以使用Visual Basic或C#编写更复杂的数据类型,以满足业务需求。这些类型被定义为基本的CLR语言中的类结构。第8章将更详细地介绍其管理部分的内容。
 

相关教程