您的位置:首页 > 数据库

【转载】SQL Server数据类型详解

2010-05-21 16:41 411 查看
数据类型是数据的一种属性,是数据所表示信息的类型。任何一种语言都有它自己所固有的数据类型,SQL Server提供一下25种固有的数据类型。

SQL Server数据类型一览表
  ·Binary [(n)]
·Varbinary [(n)]
·Char [(n)]
·Varchar[(n)]
·Nchar[(n)]
·Nvarchar[(n)]
·Datetime
·Smalldatetime
·Decimal[(p[,s])]
·Numeric[(p[,s])]
·Float[(n)]
·Real
·Int
·Smallint
·Tinyint
·Money
·Smallmoney
·Bit
·Cursor
·Sysname
·Timestamp
·Uniqueidentifier
·Text
·Image
·Ntext
1、二进制数据类型:
二进制数据由十六进制数表示,可以使用 binaryvarbinary image 数据类型存储。
·binary 固定长度(最多为8K)的二进制数据类型。

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

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

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

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

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

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

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

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

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

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

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

·nvarchar ( varchar ) 是可变长度 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 PM",也包括"1:28:29:15:01 AM 8/17/98"。在 Microsoft® SQL Server™ 2000 中,日期和时间数据使用 datetimesmalldatetime 数据类型存储。
·datetime
数据类型存储从 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期。
每个数值要求 8 个字节的存储空间。

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

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

5、数字数据类型
数字数据只包含数字。数字数据包括正数、负数、小数、分数和整数。
·整型数据
整型数据由负整数或正整数组成,如 -15、0、5 和 2509。在 Microsoft® SQL Server™
2000 中,整型数据使用 bigintintsmallint 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 数据包含存储在最小有效数上的数据。在 SQL Server中,小数数据使用 decimal numeric 数据类型存储。存储 decimal numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值 19283.29383 比存储 1.1 需要更多的字节。在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。

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

float

-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308

取决于 n 的值

real

-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38

4 字节

float [ (n) ]
其中 n 为用于存储 float 数值尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了 n,则它必须是介于 153 之间的某个值。n 的默认值为 53

n value 精度 存储大小
1-24

7 位数

4 字节

25-53

15 位数

8 字节

注意:
SQL Server 2005 将 n 视为下列两个可能值之一。如果 1<=n<=24,则将 n 视为 24。如果 25<=n<=53,则将 n 视为 53
SQL Server float[(n)] 数据类型从 153 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)

real 的 SQL-92 同义词为 float(24)

6、货币数据类型
货币数据表示正的或负的货币值。在 Microsoft® SQL Server™ 2000 中使用 moneysmallmoney 数据类型存储货币数据。货币数据存储的精确度为四位小数。
·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、日期和时间、数字和货币数据类型表示的数据。

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

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

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

·sql_variant
一种存储 SQL Server 所支持的各种数据类型(textntexttimestampsql_variant 除外)值的数据类型。

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

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

--------------------------------------------------------------------------------

用户定义的数据类型

  用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义 一种称为   postal_code 的数据类型,它基于 Char 数据类型。
当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。

1、创建用户定义的数据类型

  创建用户定义的数据类型可以使用 Transact-SQL 语句。系统存储过程 sp_addtype 可以来创建用户定义的数据类型。其语法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据类型,例如 Decimal、Int、Char   等等。 null_type 表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不允许空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允许空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
创建两个数据类型,即 telephone 和 fax

2、删除用户定义的数据类型

  当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。

--------------------------------------------------------------------------------------------------------------------------------------------------

SQL SERVER的字段类型说明

  以下为SQL SERVER7.0以上版本的字段类型说明。SQL SERVER6.5的字段类型说明请参考SQL SERVER提供的说明。

字段类型 描述
bit 0或1的整型数字
int 从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字
smallint 从-2^15(-32,768)到2^15(32,767)的整型数字
tinyint 从0到255的整型数字

decimal 从-10^38到10^38-1的定精度与有效位数的数字
numeric decimal的同义词

money 从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十
smallmoney 从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十

float 从-1.79E+308到1.79E+308可变精度的数字
real 从-3.04E+38到3.04E+38可变精度的数字

datetime 从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒
smalldatetime 从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟

timestamp 时间戳,一个数据库宽度的唯一数字
uniqueidentifier 全球唯一标识符GUID

char 定长非Unicode的字符型数据,最大长度为8000
varchar 变长非Unicode的字符型数据,最大长度为8000
text 变长非Unicode的字符型数据,最大长度为2^31-1(2G)

nchar 定长Unicode的字符型数据,最大长度为8000
nvarchar 变长Unicode的字符型数据,最大长度为8000
ntext 变长Unicode的字符型数据,最大长度为2^31-1(2G)

binary 定长二进制数据,最大长度为8000
varbinary 变长二进制数据,最大长度为8000
image 变长二进制数据,最大长度为2^31-1(2G)

Access 数据类型与 MS SQL 数据类型的相应

文本 nvarchar(n)

备注 ntext

数字(长整型) int

数字(整型) smallint

数字(单精度) real

数字(双精度) float

数字(字节) tinyint

货币 money

日期 smalldatetime

布尔 bit

*********************************************************************************************************************************
Nvarchar:可变长度的中文
Nchar:固定长度的中文
varchar:可变长度的字符
用于中文时加N,可变长度时加var
当为固定长度时,当内容不够时用空格补充,所以可能会用于trim();
可变长度不用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: