下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQLServer 数据类型详解A,整数整数型数据包括 bigint 型、int 型、smallint 型和 tinyint 型。 bigint 型数据的存储大小为 8 个字节,共 64 位。其中 63 位用于表示数值的大小,1 位用于表示符号。bigint 型数据可以存储的数值范围是-263263-1,即-92233720368547758089223372036854775807。 int 型数据的存储大小为 4 个字节,共 32 位。其中 31 位用于表示数值的大小,1 位用于表示符号。int型数据存储的数值范围是-231-231-1,即-21474836482147483647。 sm
2、allint 型数据的存储大小为 2 个字节,共 16 位。其中 15 位用于表示数值的大小,1位用于表示符号。smallint 型数据存储的数值范围是-215215-1,即-3276832767。 tinyint 型数据的存储大小只有 1 个字节,共 8 位,全部用于表示数值的大小,由于没有符号位,所以 tinyint 型的数据只能表示正整数。tinyint 型数据存储的数值范围是-2727-1,即-256255。B,浮点浮点数据类型用于存储十进制小数。在 SQLServer2000 中浮点数值的数据采用上舍入(Roundup)的方式进行存储,也就是说,要舍入的小数部分不论其大小,只要是一个
3、非零的数,就要在该数字的最低有效位上加 1,并进行必要的进位。由于浮点数据为近似值,所以并非数据类型范围内的所有数据都能精确地表示。浮点数据类型包括 real 型、float 型、decimal 型和 numeric 型。 real 型数据的存储大小为 4 个字节,可精确到小数点后第 7 位数字。这种数据类型的数据存储范围为从-3.40E+38-1.18E-38,0 和 1.18E-383.40E+38。 float 型的数据存储大小为 8 个字节,可精确到小数点后第 15 位数字。这种数据类型的数据存储范围为从-1.79E+308-2.23E-308,0 和 2.23E+3081.79E+3
4、08。float 型的数据可写成 float(n)的形式。其中 n 是 115 之间的整数值,指定 float 型数据的精度。当 n 为 17 时,实际上用户定义了一个 real 型的数据,系统用 4 个字节存储;当 n 为 815 时,系统认为它是个 float 型的数据,用 8 个字节存储它。这样既增强了数据定义的灵活性,又节省了空间。 decimal 数据类型和 numeric 数据类型的功能完全一样,它们都可以提供小数所需要的实际存储空间,但也有一定的限制,用户可以用 217 个字节来存储数据,取值范围是-1038+11038-1。decimal型数据和numeric型数据的定义格式为
5、decimal(p,s)和numeric(p,s),其中p表示可供存储的值的总位数(不包括小数点),默认值为 18;s 表示小数点后的位数,默认值为 0;参数之间的关系是 0WsWp。例如:decimal(15,5)表示共有 15 位数,其中整数 10 位,小数 5 位。C.二进制二进制数据类型用于存储二进制数据,包括 binary 型、varbinary 型和 image 型。 binary 型是固定长度的二进制数据类型,其定义形式为 binary(n),其中 n 表示数据的长度,取值为 18000。在使用时应指定 binary 型数据的大小,默认值为 1 个字节。binary 类型的数据占
6、用 n+4 个字节的存储空间。在输入数据时必须在数据前加上字符“0X”作为二进制标识。例如:要输入“abc”则应输入“0Xabc。若输入的数据位数为奇数,则系统会自动在起始符号“0X”的后面添加一个 0。如上述输入“0Xabc”后,系统会自动变为“0X0abc”。varbinary 型是可变长度的二进制数据类型,其定义形式为 varbinary(n),其中 n 表示数据的长度,取值为 18000。如果输入的数据长度超出 n 的范围,则系统会自动截掉超出部分。varbinary 型具有变动长度的特性,因为 varbinary 型数据的存储长度为实际数值长度+4个字节。当 binnary 型数据允
7、许 null 值时,将被视为 varbinary 型的数据。一般情况下,由于 binary 型的数据长度固定,因此它比 varbinary 型的数据处理速度快。image 型的数据也是可变长度的二进制数据,其最大长度为 231-1(2147483647)个字节。D.逻辑逻辑数据类型只有一种 bit 型。bit 数据类型只占用 1 个字节的存储空间,其值为 0 和 1。只要输入的值为非 0,系统都会当作 1 处理。另外,bit 型不能定义为 null 值。E.字符字符数据类型是使用最多的数据类型,它可以用来存储各种字母、数字符号、特殊符号等。一般情况下,使用字符类型数据时,须在数据的前后加上单引
8、号或双引号。字符数据类型包括 char 型、nchar 型、varchar 型和 nvarchar 型。 char 型是固定长度的非 Unicode 字符数据类型,在存储时每个字符和符号占用一个字节的存储空间。其定义形式为 char(n),其中 n 表示所有字符所占的存储空间,取值为 18000,即可容纳 8000 个 ANSI 字符,默认值为 1。若输入的数据字符数小于 n 定义的范围,则系统自动在其后添加空格来填满设定好的空间;若输入的数据字符数超过 n 定义的范围,则系统自动截掉超出部分。 nchar 型是固定长度的 Unicode 字符数据类型,由于 Unicode 标准规定在存储时每
9、个字符和符号占用2个字节的存储空间, 因此nchar型的数据比char型数据多占用一倍的存储空间。 其定义形式为nchar(n),其中 n 表示所有字符所占的存储空间,取值为 14000,即可容纳 4000 个 Unicode 字符,默认值为 1。使用 Unicode 标准字符集的好处是由于它使用两个字节作存储单位,使得一个存储单位的容量大大增加,这样就可以将全世界的语言文字都囊括在内。当用户在一个数据列中同时输入不同语言的文字符号时,系统不会出现编码冲突。 varchar 型是可变长度的非 Unicode 字符数据类型。其定义形式为 varchar(n)。它与 char 型类似,n的取值范围
10、是 18000。由于 varchar 型具有可变长度的特性,所以 varchar 型数据的存储长度为实际数值的长度。如果输入数据的字符数小于 n 定义的长度,系统也不会像 char 型那样在数据后面用空格填充;但是如果输入的数据长度大于 n 定义的长度,系统会自动截掉超出部分。一般情况下,由于 char 型的数据长度固定,因此它比 varchar 型数据的处理速度快。 nvarchar型是可变长度的 Unicode字符数据类型, 其定义形式为 nvarchar(n)。由于它采用了 Unicode标准字符集,因此 n 的取值范围是从 14000。nvarchar 型的其他特性与 varchar
11、类型相似。F.文本和图形文本和图形数据类型是用于存储大量的非 Unicode 和 Unicode 字符以及二进制数据的固定长度和可变长度数据类型,包括 text 型、ntext 型和 image 型。 text 型是用于存储大量非 Unicode 文本数据的可变长度数据类型,其容量理论上为 231-1(2147483647)个字节。在实际应用时需要视硬盘的存储空间而定。在 SQLServer2000 以前的版本中, 数据库中一个 text 对象存储的实际上是一个指针, 它指向一个以 8KB为单位的数据页。这些数据页是动态增加并被逻辑连接起来的。在 SQLServer2000 中,则将 text
12、 和 image 型的数据直接存放到表的数据行中,而不是存放到不同的数据页中。这样就减少了用于存储 text 和 image 类型的空间,并相应减少了磁盘处理这类数据的 I/O 数量。 ntext 型是用于存储大量 Unicode 文本数据的可变长度数据类型,其理论容量为 230-1(1073741823)个字节。ntext 型的其他用法与 text 型基本一样。 image 型是用于存储大量二进制数据的可变长度数据类型,其理论容量为 231-1(2147483647)个字节。Image 型数据的存储模式与 text 型数据相同,通常用来存储图形等 OLE对象。在输入数据时,与输入二进制数据一
13、样,必须在数据前加上起始符号“0X”作为二进制标识。G.日期和时间日期和时间数据类型代表日期和一天内的时间,包括 datetime 型和 smalldatetime 型。 datetime 型是用于存储日期和时间的结合体的数据类型。它可以存储从公元 1753 年 1 月1 日零时起到公元 9999 年 12 月 31 日 23 时 59 分 59 秒之间的所有日期和时间,其精确度可达 3Mdatetime 型数据所占用的存储空间为 8 个字节,其中前 4 个字节用于存储 1900 年 1 月 1 日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后 4 个
14、字节用于存储从此日零时起所指定的时间经过的毫秒数。如果在输入时省略了时间部分,则系统将默认为 12:00:00:000AM;如果省略了日期部分,系统将默认为 1900 年1 月 1 日。 smalldatetime 型与 datetime 型相似,但其存储的日期时间范围较小,从 1900 年 1 月 1 日到 2079 年6 月 6 日。它的精度也较低,只能精确到分钟级,其分钟个位上的值是根据秒数并以 30 秒为界四舍五入得到的。Smalldatetime 型数据所占用的存储空间为 4 个字节,其中前两个字节存储从基础日期 1900年 1 月 1 日以来的天数,后两个字节存储此日零时起所指定的
15、时间经过的分钟数。H.货币货币数据类型用于存储货币或现金值,包括 money 型和 smallmoney 型。在使用货币数据类型时,应在数据前加上货币符号,以便系统辨识其为哪国的货币,如果不加货币符号,则系统默认为“”。money 型是一个有 4 位小数的 decimal 值,其取值从-263(-9223372036854775808)-263-1(+9223372036854775807),精确到货币单位的千分之十。存储大小为 8 个字节。 smallmoney 型货币数据值介于-2147483648+2147483647 之间,精确到货币单位的千分之十。存储大小为 4 个字节。I.特定SQ
16、LServer2000 中包含了一些用于数据存储的特殊数据类型,包括 timestamp 型和uniqueidentifier 型。timestamp 数据类型提供数据库范围内的惟一值,它相当于 binary(8)或 varbinary(8),但当它所定义的列在进行更新或插入数据行操作时,此列的值会自动更新。每个数据库表中只能有一个 timestamp 型数据列。如果表中的列名为“timestamp”,则该列的类型将被自动定义为timestamp 型。 uniqueidentifier 数据类型用于存储一个 16 位的二进制数据,此数据称为全局惟一标识符(GloballyUniqueIdent
17、ifier,GUID)。此数据由 SQLServer2000 的 NEWID()函数产生,在全球各地的计算机经由此函数产生的数字不会相同。J.用户自定义sysname 数据类型是系统提供给用户的,便于用户自定义的数据类型。该数据类型被定义为NVARCHAR(128)即它可以存储 128 个 Unicode 字符或 256 个一般字符。K.新增数据类型前面讲到过 SQLServer2000 新增了 3 种数据类型:bigint 型、sql_variant 型和 table 型。其中 bigint 型已经在整数类型中介绍过了。 sql_variant 型是一种存储 SQLServer 支持的各种数
18、据类型(text、ntexttimestamp 和sql_variant 除外)值的数据类型。此数据类型大大方便了 SQLServer 的开发工作。table 型用于存储对表或视图处理后的结果集。table 数据类型不适用于表中的列,而只能用于Transact-SQL 变量和用户定义函数的返回值。这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便快捷。(1)二进制数据类型二进制数据包括Binary、Varbinary和ImageBinary数据类型既可以是固定长度的(Binary),也可以是变长度的。Binary(n)是n位固定的二进制数据。其中,n的取值范围是从1至U800
19、0。其存储窘的大小是n+4个字节。Varbinary(n)是n位变长度的二进制数据。其中,n的取值范围是从1到8000。其存储窘的大小是n+4个字节,不是n个字节。在Image数据类型中存储的数据是以位字符串存储的,不是由SQLServer解释的,必须由应用程序来解释。例如,应用程序可以使用BMPTIEF、GIF和JPEG格式把数据存储在Image数据类型中。(2)字符数据类型字符数据的类型包括Char,Varchar和Text字符数据是由任何字母、符号和数字任意组合而成的数据。Varchar是变长字符数据,其长度不超过8KB。Char是定长字符数据,其长度最多为8KB。超过8KB的ASCII
20、数据可以使用Text数据类型存储。例如,因为Html文档全部都是ASCII字符,并且在一般情况下长度超过8KB,所以这些文档可以Text数据类型存储在SQLServer中。Unicode数据类型Unicode数据类型包括Nchar,Nvarchar和Ntext在MicrosoftSQLServer中,传统的非Unicode数据类型允许使用由特定字符集定义的字符。在SQLServer安装过程中,允许选择一种字符集。使用Unicode数据类型,列中可以存储任何由Unicode标准定义的字符。在Unicode标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的鲁是使用非Un
21、icode数据类型所占用的普大小的两倍。在SQLServer中,Unicode数据以Nchar、Nvarchar和Ntext数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用Nvarchar字符类型,这时最多可以存储4000个字符。当列的长度固定不变时,应该使用Nchar字符类型,同样,这时最多可以存储4000个字符。当使用Ntext数据类型时,该列可以存储多于4000个字符。(4)日期和时间数据类型日期和时间数据类型包括Datetime和Smalldatetime两种类型日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/0
22、1/9812:15:00:00:00PM和“1:28:29:15:01AM8/17/98。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在MicrosoftSQLServer中,日期和时间数据类型包括Datetime和Smalldatetime两种类型时, 所存储的日期范围是从1753年1月1日开始,到9999年12月31日结束(每一个值要求8个存储字节)。使用Smalldatetime数据类型时,所存储的日期范围是1900年1月1日开始,到2079年12月31日结束(每一个值要求4个存储字节)。日期的格式可以设定。设置日期格式的命令如下:SetDateFormatfo
23、rmat|format_var|其中,format|format_var是日期的顺序。有效的参数包括MDYDMYYMDYDIMMYD和DYM在默认情况下,日期格式为MDY例如,当执行SetDateFormatYMD之后,日期的格式为年月日形式;当执行SetDateFormatDMY之后,日期的格式为日月有年形式(5)数字数据类型数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数整数由正整数和负整数组成,例如39、25、0-2和33967。在MicrsoftSQLServer中,整数存储的数据类型是Int,Smallint和Tinyint。Int数据类型存储数据的范围大于Sma
24、llint数据类型存储数据的范围,而Smallint据类型存储数据的范围大于Tinyint数据类型存储数据的范围。 使用Int数据狗昔存储数据的范围是从-2147483648到2147483647 (每一个值要求4个字节存储空间) 。 使用Smallint数据类型时,存储数据的范围从-32768到32767(每一个值要求2个字节存储空间)。使用Tinyint数据类型时,存储数据的范围是从0到255(每一个值要求1个字节存储空间)。精确小娄数据在SQLServer中的数据类型是Decimal和Numeric0这种数据所占的存储空间根据该数据的位数后的位数来确定。在SQLServer中,近似小数数
25、据的数据类型是Float和Real。例如,三分之一这个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。(6)货币数据表示正的或者负的货币数量。在MicrosoftSQLServer中,货币数据的数据类型是Money和SmallmoneyMoney数据类型要求8个存储字节,Smallmoney数据类型要求4个存储字节。(7)特殊数据类型特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即Timestamp、Bit和Uniqueidentifier。Timestamp用于表示SQLServer活动的先后顺序,以二进投
26、影的格式表示。Timestamp数据与插入数据或者日期和时间没有关系。Bit由1或者0组成。当表示真或者假、ON或者OFF时,使用Bit数据类型。例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中。Uniqueidentifier由16字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。2.用户定义的数据类型用户定义的数据类型基于在MicrosoftSQLServer中提供的数据类型。 当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义
27、的数据类型。例如,可定义一种称为postal_code的数据类型,它基于Char数据类型。当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。(1)创建用户定义的数据类型创建用户定义的数据类型可以使用Transact-SQL语句。系统存储过程sp_addtype可以来创建用户定义的数据类型。其语法形式如下:sp_addtypetype,system_data_bype,null_type其中,type是用户定义的数据类型的名称。system_data_type是系统提供的数据类型,例如Decimal、Int、Char等等。null_type表示该
28、数据类型是如何处理空值的,必须使用单引号引起来,例如NULL、NOTNULL或者NONULL。例子:UsecustExecsp_addtypessn,Varchar(11),NotNull创建一个用户定义的数据类型ssn,其基于的系统数据类型是变长为11的字符, 不允许空。例子:UsecustExecsp_addtypebirthday,datetime,Null创建一个用户定义的数据类型birthday,其基于的系统数据类型是DateTime,允许空。例子:UsemasterExecsp_addtypetelephone,varchar(24),NotNullEexcsp_addtypefa
29、x,varchar(24),Null创建两个数据类型,即telephone和fax(2)删除用户定义的数据类型当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是sp_droptypetype。例子:UsemasterExecsp_droptypessn注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。SQLServer中易混淆的数据类型SQLServer中易混淆的数据类型近来在做数据库设计,有时候真弄不清SQL2000里的数据类型,所以摘了这篇文章。(1)char、varchar、text和nchar、nvar
30、char、ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2A31-1(2,147,483,647)个字符。后面三种数据类型和前面的相比,从名称上看只是多了个字母n,它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字
31、节存储,英文与汉字同时存在时容易造成混舌L,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:ncharnvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。(2)datetime和smalldatetimedatetime:从1753年
32、1月1日至U9999年12月31日的日期和时间数据,精确到百分之三秒。smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据, 精确到分钟。(3)bitint、int、smallint、tinyint和bitbigint:从-2A63(-9223372036854775808)至U2A63-1(9223372036854775807)的整型数据。int:从-2A31(-2,147,483,648)至U2A31-1(2,147,483,647)的整型数据。smallint:从-2A15(-32,768)至U2A15-1(32,767)的整数数据。tinyint:从0
33、至U255的整数数据。bit:1或0的整数数据。(4)decimal和numeric这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是00(5)float和realfloat:从-1.79A308到1.79A308之间的浮点数字数据。real:从-3.40A38至U3.40A38之间的浮点数字数据。在SQLServer中,real的同义词为float(24)。SQLServer最佳索引策略2007-08-2821:21:44来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高处作业安全知识及专业技术培训考试试卷
- 协议签好后多久签合同
- 劳动合同不续签的协议
- 制石沙加工合同协议书
- 职业教育市场的潜在机会分析
- 公司欠货款协议书范本
- 卤味合作分销合同范本
- 关于房产分配合同范本
- 北京汽车订车合同范本
- 印刷公司购销合同范本
- 24年10月自考13003数据结构与算法试题及答案
- 2024年建筑艺术之美:桥梁建筑的魅力
- 医院培训课件:《成人住院患者静脉血栓栓塞症的预防护理》
- 冷库建设 投标方案(技术方案)
- 无人机技术探索
- 2024-2025学年六年级上册数学人教版期中考试试题(1-4单元)(含答案)
- 拍七令游戏课件
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- GB/T 44329-2024混合气体的制备称量法
- 《进一步规范管理燃煤自备电厂工作方案》发改体改〔2021〕1624号
- 4039话机简单使用说明
评论
0/150
提交评论