1、二进制数据类型
二进制数据由十六进制数表示,可以使用binary、varbinary和p_w_picpath数据类型存储。
·binary固定长度(最多为8K)的二进制数据类型。

如:binary[(n)]固定长度的n个字节二进制数据。N必须从1到8,000。存储空间大小为n+4字节。

·varbinary可变长度(最多为8K)的二进制数据类型。

如:varbinary[(n)]n个字节变长二进制数据。n必须从1到8,000。存储空间大小为实际输入数据长度+4个字节,而不是n个字节。输入的数据长度可能为0字节。在SQL-92中varbinary的同义词为binaryvarying。

·p_w_picpath用来存储长度超过8KB的可变长度的二进制数据。
除非数据长度超过8KB,否则一般宜用varbinary类型来存储二进制数据。一般用来存放MicrosoftWord文档、MicrosoftExcel电子表格、包含位图的图像、图形交换格式(GIF)文件和联合图像专家组(JPEG)文件。
在Image数据类型中存储的数据是以位字符串存储的,不是由SQLServer解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF和JPEG格式把数据存储在Image数据类型中。


2、字符数据类型
字符数据由字母、符号和数字组成。使用char、varchar和text数据类型存储。
·char固定长度(不超过8KB)的字符数据类型。

如:char[(n)]长度为n个字节的固定长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为n个字节。char在SQL-92中的同义词为character。

·varchar可变长度(不超过8KB)的字符数据类型。

如:varchar[(n)]长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。varchar在SQL-92中的同义词为charvarying或charactervarying。

·text数据类型的列可用于存储大于8KB的ASCII字符。
例如,由于HTML文档均由ASCII字符组成且一般长于8KB,所以用浏览器查看之前应在SQLServer中存储在text列中。


3、Unicode数据类型
使用Unicode数据类型,列可存储由Unicode标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode数据使用SQLServer中的nchar、varchar和ntext数据类型进行存储。
·nchar固定长度(至多为4000个Unicode字符)的Unicode数据类型。

如:nchar(n)包含n个字符的固定长度Unicode字符数据。n的值必须介于1与4,000之间。存储大小为n字节的两倍。nchar在SQL-92中的同义词为nationalchar和nationalcharacter。

·nvarchar(varchar)是可变长度Unicode数据的数据类型。

如:nvarchar(n)包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。
字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar在SQL-92中的同义词为nationalcharvarying和nationalcharactervarying。

·ntext当列中任意项超过4000个Unicode字符时使用。


4、日期和时间数据类型
日期和时间数据由有效的日期或时间组成。例如,有效日期和时间数据既包括"4/01/9812:15:00:00:00PM",也包括"1:28:29:15:01AM8/17/98"。在MicrosoftSQLServer2000中,日期和时间数据使用datetime和smalldatetime数据类型存储。
·datetime
数据类型存储从1753年1月1日至9999年12月31日的日期。每个数值要求8个字节的存储空间。

·smalldatetime
数据类型存储从1900年1月1日至2079年6月6日的日期。每个数值要求4个字节的存储空间。

·设置日期
格式的命令如下:SetDateFormat{format|@format_var|
其中,format|@format_var是日期的顺序。有效的参数包括MDY、DMY、YMD、YDM、MYD和DYM。在默认情况下,日期格式为MDY。


5、数字数据类型
数字数据只包含数字。数字数据包括正数、负数、小数、分数和整数。
·整型数据
整型数据由负整数或正整数组成,如-15、0、5和2509。在MicrosoftSQLServer2000中,整型数据使用bigint、int、smallint和tinyint数据类型存储。bigint数据类型可存储的数字范围比int数据类型广。int数据类型比smallint数据类型的存储范围大,而smallint的数值范围又比tinyint类型大。

bigint存储从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)范围内的数字。存储大小为8个字节。

int存储范围是-2,147,483,648至2,147,483,647(每个值需4个字节的存储空间)。

smallint存储范围只有-32,768至32,767(每个值需2个字节的存储空间)。

tinyint只能存储0至255范围内的数字(每个值需1个字节的存储空间)。

·小数数据
Decimal数据包含存储在最小有效数上的数据。在SQLServer中,小数数据使用decimal或numeric数据类型存储。存储decimal或numeric数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值19283.29383比存储1.1需要更多的字节。在SQLServer中,numeric数据类型等价于decimal数据类型。

·近似数字数据
近似数字(浮点)数据包括按二进制计数系统所能提供的最大精度保留的数据。在SQLServer中,近似数字数据以float和real数据类型存储。例如,分数1/3表示成小数形式为0.333333(循环小数),该数字不能以近似小数数据精确表示。因此,从SQLServer获取的值可能并不准确代表存储在列中的原始数据。又如以.3,.6,.7结尾的浮点数均为数字近似值。


6、货币数据类型
货币数据表示正的或负的货币值。在MicrosoftSQLServer2000中使用money和smallmoney数据类型存储货币数据。货币数据存储的精确度为四位小数。
·money存储范围是-922,337,203,685,477.5808至+922,337,203,685,477.5807(需8个字节的存储空间)。

·smallmoney存储范围是-214,748.3648至214,748.3647(需4个字节的存储空间)。

·如果数值超过了上述范围,则可使用decimal数据类型代替。


7、特殊数据类型
特殊数据包括不能用前面所述的二进制、字符、Unicode、日期和时间、数字和货币数据类型表示的数据。

MicrosoftSQLServer2000包含四种特殊数据类型:
·timestamp
用于表示SQLServer在一行上的活动顺序,按二进制格式以递增的数字来表示。当表中的行发生变动时,用从@@DBTS函数获得的当前数据库的时间戮值来更新时间戮。timestamp数据与插入或修改数据的日期和时间无关。若要自动记录表中数据更改的时间,使用datetime或smalldatetime数据类型记录事件或触发器。SQLServe中rowversion是timestamp的同义词。

·bit
bit数据类型只能包括0或1。可以用bit数据类型代表TRUE或FALSE、YES或NO。例如,询问客户是否为初次访问的问题可存储在bit列中。

·uniqueidentifier
以一个16位的十六进制数表示全局唯一标识符(GUID)。当需要在多行中唯一标识某一行时可使用GUID。例如,可使用unique_identifier数据类型定义一个客户标识代码列,以编辑公司来自多个国家/地区的总的客户名录。

·sql_variant
一种存储SQLServer所支持的各种数据类型(text、ntext、timestamp和sql_variant除外)值的数据类型。

·table
一种特殊的数据类型,存储供以后处理的结果集。table数据类型只能用于定义table类型的局部变量或用户定义函数的返回值。

·用户定义
允许使用用户定义数据类型,例如,product_code可设计为基于char数据类型的两个大写字母后跟5位供应商号码的格式