1、SQL Server 数据类型一览表Binary (n)Varbinary (n)Char (n)Varchar(n)Nchar(n)Nvarchar(n)DatetimeSmalldatetimeDecimal(p,s)Numeric(p,s)Float(n)RealIntSmallintTinyintMoneySmallmoneyBitCursorSysnameTimestampUniqueidentifierTextImageNtext1、二进制数据类型:二进制数据由十六进制数表示,可以使用 binary、varbinary 和 image 数据类型存储。binary 固定长度(最多为
2、8K)的二进制数据类型。binary ( n ) 固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n+4 字节。varbinary 可变长度(最多为 8K)的二进制数据类型。varbinaryimage 用来存储长度超过 8 KB 的可变长度的二进制数据。除非数据长度超过 8KB,否则一般宜用 varbinary 类型来存储二进制数据。一般用来存放 Microsoft Word 文档、Microsoft Excel 电子表格、包含位图的图像、图形交换格式 (GIF) 文件和联合图像专家组 (JPEG) 文件。在 Image 数据类型中存储的数据是以位字符串存储
3、的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用 BMP、 TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。2、字符数据类型字符数据由字母、符号和数字组成。使用 char、varchar 和 text 数据类型存储。char 固定长度(不超过 8 KB)的字符数据类型。char(n)长度为 n 个字节的固定长度且非 Unicode 的字符数据。 n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。varchar 可变长度(不超过 8 KB)的字符
4、数据类型。varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。 n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。text 数据类型的列可用于存储大于 8KB 的 ASCII 字符。例如,由于 HTML 文档均由 ASCII 字符组成且一般长于 8KB,所以用浏览器查看之前应在 SQL Server 中存储在 text 列中。3、Unicode 数据类型使用 Uni
5、code 数据类型,列可存储由 Unicode 标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode 数据使用 SQL Server 中的 nchar、varchar 和 ntext 数据类型进行存储。nchar 固定长度(至多为 4000 个 Unicode 字符)的 Unicode 数据类型。nchar(n)包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。nvarchar ( varch
6、ar ) 是可变长度 Unicode 数据的数据类型。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar在 SQL-92 中的同义词为 national char varying 和 national character varying。ntext 当列中任意项超过 4000 个 Unicode 字符时使用。4、日期和时间数据类型日期和时间数据由有效的日期或时间组成。例如,有效日期和时间数据既包括“4/01/98 12:15:00:00:00
7、 PM“,也包括“1:28:29:15:01 AM 8/17/98“。在 Microsoft SQL Server 2000 中,日期和时间数据使用 datetime 和 smalldatetime 数据类型存储。datetime 数据类型存储从 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期。每个数值要求 8 个字节的存储空间。smalldatetime 数据类型存储从 1900 年 1 月 1 日至 2079 年 6 月 6 日的日期。每个数值要求 4 个字节的存储空间。设置日期格式的命令如下:Set DateFormat format | format _var|
8、其中,format | format_var 是日期的顺序。有效的参数包括 MDY、DMY 、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为 MDY。5、数字数据类型数字数据只包含数字。数字数据包括正数、负数、小数、分数和整数。整型数据整型数据由负整数或正整数组成,如 -15、0、5 和 2509。在 Microsoft SQL Server 2000 中,整型数据使用 bigint、int、smallint 和 tinyint 数据类型存储。bigint 数据类型可存储的数字范围比 int 数据类型广。int 数据类型比 smallint 数据类型的存储范围大,而 smalli
9、nt 的数值范围又比 tinyint 类型大。bigint 存储从-263 (-9223372036854775808)到 263-1(9223372036854775807) 范围内的数字。存储大小为 8 个字节。int 存储范围是-2,147,483,648 至 2,147,483,647(每个值需 4 个字节的存储空间) 。smallint 存储范围只有 -32,768 至 32,767(每个值需 2 个字节的存储空间) 。tinyint 只能存储 0 至 255 范围内的数字(每个值需 1 个字节的存储空间) 。小数数据Decimal 数据包含存储在最小有效数上的数据。在 SQL Se
10、rver 中,小数数据使用 decimal 或 numeric 数据类型存储。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值 19283.29383 比存储 1.1 需要更多的字节。在 SQL Server 中,numeric 数据类型等价于 decimal 数据类型。近似数字数据近似数字(浮点)数据包括按二进制计数系统所能提供的最大精度保留的数据。在 SQL Server 中,近似数字数据以 float 和 real 数据类型存储。例如,分数 1/3 表示成小数形式为 0.333333(循环小数) ,该数字不能以近似小数
11、数据精确表示。因此,从 SQL Server 获取的值可能并不准确代表存储在列中的原始数据。又如以 .3, .6, .7 结尾的浮点数均为数字近似值。6、货币数据类型货币数据表示正的或负的货币值。在 Microsoft SQL Server 2000 中使用 money 和 smallmoney 数据类型存储货币数据。货币数据存储的精确度为四位小数。money 存储范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间) 。smallmoney 存储范围是 -214,748.3648 至 214,748.36
12、47(需 4 个字节的存储空间) 。如果数值超过了上述范围,则可使用 decimal 数据类型代替。7、特殊数据类型特殊数据包括不能用前面所述的二进制、字符、Unicode 、日期和时间、数字和货币数据类型表示的数据。Microsoft SQL Server 2000 包含四种特殊数据类型: timestamp用于表示 SQL Server 在一行上的活动顺序,按二进制格式以递增的数字来表示。当表中的行发生变动时,用从 DBTS 函数获得的当前数据库的时间戮值来更新时间戮。timestamp 数据与插入或修改数据的日期和时间无关。若要自动记录表中数据更改的时间,使用 datetime 或 sm
13、alldatetime 数据类型记录事件或触发器。SQL Serve 中 rowversion 是 timestamp 的同义词。bit bit 数据类型只能包括 0 或 1。可以用 bit 数据类型代表 TRUE 或 FALSE、YES 或 NO。例如,询问客户是否为初次访问的问题可存储在 bit 列中。uniqueidentifier 以一个 16 位的十六进制数表示全局唯一标识符 (GUID)。当需要在多行中唯一标识某一行时可使用 GUID。例如,可使用 unique_ identifier 数据类型定义一个客户标识代码列,以编辑公司来自多个国家/地区的总的客户名录。sql_variant 一种存储 SQL Server 所支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。table 一种特殊的数据类型,存储供以后处理的结果集。table 数据类型只能用于定义 table 类型的局部变量或用户定义函数的返回值。