SQL Server 2008中的数据类型

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server 2008中的数据类型

SQL Server表中的每一个字段都只能包含一个预先指定的特定数据类型,例如字符或数字。这个声明叫做数据类型。在这篇文章里,我们将比较和对照SQL Server 2008的各种数据类型。此外,我们还将展示各种特定环境下哪种数据类型是最好的解决方法。在SQL Server 2008中有超过35种的不同数据类型。

分类

Microsoft将各种数据类型分为以下7种大的分类:精确数字、大约数字、日期和时间、字符串、Unicode字符串、二进制字符串和其它数据类型。

数字

有两种数字分类:精确数字和大约数字。

精确数字包括Real和Float类型。在一般情况下,当需要科学符号时使用精确数字。科学符号是一种使用10的幂数来描述非常大或非常小的数字的方法(也称作指数符号)。

精确数字包括Decimals(小数)、Integers(整数)和Money amounts(货币值)。

一个Integer是一个没有小数或分数的计算数值。所有的负数、正数和零都是整数。SQL Server将整数分为四个部分:

BigInt:从-9,223,372,036,854,775,808到9,223,372,036,854,775,807

Int:从-2,147,483,648到2,147,483,648

SmallInt:从-32,768到32,767

TinyInt:从0到255

正确地设置大小为Int类型而不是将所有都设置为BigInt是有两个主要的原因的。首先是物理磁盘空间。对于BigInt来说每条记录占据8个字节,而Int只使用两个字节。另一个原因是确保你的应用程序只接收到它所预期的数据大小,从而避免了出现缓冲溢出的现象。

具有小数的精确数字包括Decimal、Numeric、Money和SmallMoney 数据类型。Decimal和Numeric类型功能上是一样的。就是说,它们的使用、计算和行为都是一样的,唯一的不同就是在数学定义上而不是SQL Server使用它们的方法上。大多数SQL Server应用程序使用Decimal。一个Decimal的长度最多可以达到38位。当定义了Decimal,它的总长度和右侧的小数点部分的最大长度也就被配置了。定义的位数越多,每条记录上使用的物理磁盘空间就越多。

Money和SmallMoney是小数点后固定的有四位的小数。SmallMoney的值可以从- 214,748.3648到214,748.3647,而Money值的范围是从-922,337,203,685,477.5808到922,337,203,685,477.5807。使用Money而不是一个Decimal的一个原因是可以选择在三位数后显示美元符号和逗号。

字符串

这一节将开始讨论字符串:Char、VarChar和Text。一个Char(字符)数据类型可以保存字母、数字和键盘字符。当定义了一个Char时,它的最大长度(可以达到8,000)就也固定了。想想一个Char可以将你能输入到记事本中的所有东西保存住——而且就像记事本,如果你输入数字到一个Char字段,那么不能对它们执行数学操作。它们会被看做是文本字符,而不是数字。一般情况下,当输入每一条记录的字符数目都大致相同时,例如一个邮编货电话号码,这时就使用Char 字段。如果数据的长度是每条记录都很不一样时,例如一个邮件地址,那么使用VarChar。一个VarChar是一个长度可变的Char(Var)。当创建了一个VarChar时,它的最大长度就也被定义了。使用VarChar而不是Char的一个主要原因是各自使用的物理磁盘空间的数量。在下面的例子里,创建了一个具有一个Char字段和一个VarChar字段的表。它们都设置为大小最大为50.

图1

给每一个输入相同的测试数据。

图2

下面的TSQL返回物理磁盘上的字节空间数目,按行和列的形式。

SELECT DATALENGTH(ColChar) AS CharSize, DATALENGTH(ColVarChar) AS VarSize

FROM table1

图3

所以无论输入的数据是大是小,对于每一条记录Char字段都使用50个字节。

VarChar的另一个好处是可以指定不限制大小的能力。这是通过使用“Max”关键字来完成的,如同在VarChar(Max)中一样。Max意味着大小可以超过8,000字节。此外,这个大小是不限制的。

最后一个字符串类型的是Text数据类型。Text和VarChar(Max)

字段类似。它目前包括在SQL Server 2008之中只用于向后兼容,在未来某个时候它将被废弃。

Unicode

Unicode是一个标准的方法,它允许应用程序记录其它语言的字符而不仅仅是我们自己的。当你建立多语言应用程序或全球web网站时,Unicode就很方便了。Char和VarChar数据类型都可以配置为允许Unicode,只要在它们之前加个字母“n”,如同nChar和nVarChar。这个灵活性的代价在于增大了磁盘空间的使用。大略估计,Unicode 所需的磁盘空间大概是两倍。

二进制字符串

二进制字符串是用于保存非字符的数据,例如图片或媒体文件。有两种数据类型用于此:Binary和VarBinary。它们的配置就像Char 和VarChar。VarBinary(Max)可以用来存储不限制大小的文件。还有一个遗留数据类型叫做Image,但是它在SQL Server的未来版本中将不再出现。

其它数据类型

有7个其它的数据类型,包括Cursor、HierachyID、SQL Variant、Table、TimeStamp、UniqueIdentifier和XML。数据类型TimeStamp被RowVersion取代了。UniqueIdentifier是一个独特的GUID。当你不知道要用什么数据类型时可以使用SQL Variant数据类型。它存储任何东西都是8,000个字节。如果你使用XML,那么使用XML数据类型而不要使用一个VarChar。XML类型允许绑定到集合上。

日期和时间

相关文档
最新文档