Transact-SQL数据类型(整型浮点型⼆进制型逻辑类型字符
型)
decimal是整数数据类型4 数据类型
表4.2 SQL Server 2000的基本数据类型
binary bigint bit char datetime
decimal float image int money
nchar ntext nvarchar numeric real
smalldatetime smallint smallmoney sql_variant sysname
text timestamp tinyint varbinary varchar
uniqueidentifier
4.2.1 整数数据类型
整数型数据包括bigint型、int型、smallint型和tinyint型。
l bigint型数据的存储⼤⼩为8个字节,共64位。其中63位⽤于表⽰数值的⼤⼩,1位⽤于表⽰符号。bigint型数据可以存储的数值范围是-263~263-1,即 -9 223 372 036 854 775 808 ~9 223 372 036 854 775 807。
l int型数据的存储⼤⼩为4个字节,共32位。其中31位⽤于表⽰数值的⼤⼩,1位⽤于表⽰符号。int型数据存储的数值范围是-231~231-1,即-2 147 483 648~ 2 147 483 647。
l smallint型数据的存储⼤⼩为2个字节,共16位。其中15位表⽰数值的⼤⼩,1位⽤于表⽰符号。smallint型数据存储的数值范围是-215~215-1,即-32 768~ 32 767。
l tinyint型数据的存储⼤⼩只有1个字节,共8位,全部⽤于表⽰数值的⼤⼩,由于没有符号位,所以tinyint型的数据只能表⽰正整数。tinyint型数据存储的数值范围是-27~27-1,即-256~255。
4.2.2 浮点数据类型
浮点数据类型⽤于存储⼗进制⼩数。在SQL Server 2000中浮点数值的数据采⽤上舍⼊(Round up)的⽅式进⾏存储,也就是说,要舍⼊的⼩数部分不论其⼤⼩,只要是⼀个⾮零的数,就要在该数字的最低有效位上加1,并进⾏必要的进位。由于浮点数据为近似值,所以并⾮数据类型范围内的所有数据都
能精确地表⽰。
浮点数据类型包括real型、float型、decimal型和numeric型。
l real型数据的存储⼤⼩为4个字节,可精确到⼩数点后第7位数字。这种数据类型的数据存储范围为从-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。
l float型的数据存储⼤⼩为8个字节,可精确到⼩数点后第15位数字。这种数据类型的数据存储范围为从-1.79E+308~-2.23E-
308,0和2.23E+308~1.79E+308。
float型的数据可写成float[(n)]的形式。其中n是1~15之间的整数值,指定float型数据的精度。当n为1~7时,实际上⽤户定义了⼀个real型的数据,系统⽤4个字节存储;当n为8~15时,系统认为它是个float型的数据,⽤8个字节存储它。这样既增强了数据定义的灵活性,⼜节省了空间。
l decimal数据类型和numeric数据类型的功能完全⼀样,它们都可以提供⼩数所需要的实际存储空间,但也有⼀定的限制,⽤户可以⽤2~17个字节来存储数据,取值范围是-1038+1~1038-1。
decimal型数据和numeric型数据的定义格式为decimal[(p,[s])]和numeric[(p,[s])],其中p表⽰可供存储
的值的总位数(不包括⼩数点),默认值为18;s表⽰⼩数点后的位数,默认值为0;参数之间的关系是0≤s≤p。例如:decimal(15,5)表⽰共有15位数,其中整数10位,⼩数5位。
4.2.3 ⼆进制数据类型
⼆进制数据类型⽤于存储⼆进制数据,包括binary型、varbinary型和image型。
l binary型是固定长度的⼆进制数据类型,其定义形式为binary(n),其中n表⽰数据的长度,取值为1~8 000。在使⽤时应指定binary 型数据的⼤⼩,默认值为1个字节。binary类型的数据占⽤n+4个字节的存储空间。
在输⼊数据时必须在数据前加上字符“0X”作为⼆进制标识。例如:要输⼊“abc”则应输⼊“0Xabc”。若输⼊的数据位数为奇数,则系统会⾃动在起始符号“0X”的后⾯添加⼀个0。如上述输⼊“0Xabc”后,系统会⾃动变为“0X0abc”。
l varbinary型是可变长度的⼆进制数据类型,其定义形式为varbinary(n),其中n表⽰数据的长度,取值为1~8 000。如果输⼊的数据长度超出n的范围,则系统会⾃动截掉超出部分。
varbinary型具有变动长度的特性,因为varbinary型数据的存储长度为实际数值长度+4个字节。当binnary型数据允许null值时,将被视为varbinary型的数据。
⼀般情况下,由于binary型的数据长度固定,因此它⽐varbinary型的数据处理速度快。
l image型的数据也是可变长度的⼆进制数据,其最⼤长度为231-1(2 147 483 647)个字节。
4.2.4 逻辑数据类型
逻辑数据类型只有⼀种bit型。bit数据类型只占⽤1个字节的存储空间,其值为0和1。只要输⼊的值为⾮0,系统都会当作1处理。另外,bit 型不能定义为null值。
4.2.5 字符数据类型
字符数据类型是使⽤最多的数据类型,它可以⽤来存储各种字母、数字符号、特殊符号等。⼀般情况下,使⽤字符类型数据时,须在数据的前后加上单引号或双引号。字符数据类型包括char型、nchar型、varchar型和nvarchar型。
l char型是固定长度的⾮Unicode字符数据类型,在存储时每个字符和符号占⽤⼀个字节的存储空间。其定义形式为char[(n)],其中n表⽰所有字符所占的存储空间,取值为1~8 000,即可容纳8 000个ANSI字符,默认值为1。若输⼊的数据字符数⼩于n定义的范围,则系统⾃动在其后添加空格来填满设定好的空间;若输⼊的数据字符数超过n定义的范围,则系统⾃动截掉超出部分。
l nchar型是固定长度的Unicode字符数据类型,由于Unicode标准规定在存储时每个字符和符号占⽤2个字节的存储空间,因此nchar 型的数据⽐char型数据多占⽤⼀倍的存储空间。其定义形式为nchar[(n)],其中n表⽰所有字符所占的存储空间,取值为1~4 000,即可容纳4 000个Unicode字符,默认值为1。
使⽤Unicode标准字符集的好处是由于它使⽤两个字节作存储单位,使得⼀个存储单位的容量⼤⼤增加,这样就可以将全世界的语⾔⽂字都囊括在内。当⽤户在⼀个数据列中同时输⼊不同语⾔的⽂字符号时,系统不会出现编码冲突。
l varchar型是可变长度的⾮Unicode字符数据类型。其定义形式为varchar[(n)]。它与char型类似,n的取值范围是1~8 000。由于varchar型具有可变长度的特性,所以varchar型数据的存储长度为实际数值的长度。如果输⼊数据的字符数⼩于n定义的长度,系统也不会像char型那样在数据后⾯⽤空格填充;但是如果输⼊的数据长度⼤于n定义的长度,系统会⾃动截掉超出部分。
⼀般情况下,由于char型的数据长度固定,因此它⽐varchar型数据的处理速度快。
l nvarchar型是可变长度的Unicode字符数据类型,其定义形式为nvarchar[(n)]。由于它采⽤了Unicode标准字符集,因此n的取值范围是从1~4 000。nvarchar型的其他特性与varchar类型相似。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论