2024年6月12日发(作者:)

Sql server数据类型汇总

2.1 数据类型

2.2.1 整形

整形按其存储区间又分为int、tinyint、smallint、bigint四种类型,其中int是最常用的

类型。

1 int

int类型存储从-2^31~2^31-1之间的所有正负整数。每个int类型占4个字节空间。

2 tinyint

tinyint存储从0~255之间所有正整数。每个tinyint类型占1个字节空间

3 smallint

smallint存储从-2^15~2^15-1之间的所有正负整数。每个smallInt类型占2个字节的空

间。

4 bigint

bigint存储从-2^63~2^63-1之间的所有正负整数。每个bigint类型占8个字节的空间。

2.2.2 浮点型

1 real

可以精确到小数点后7位小数,每个real类型占4个字节。

2 float

可以精确到小数点后15位小数,每个float类型占8个字节。

3 decimal

decimal可以指定小数点后的位数,具体声明方法为decimal(w,d),其中i代表变量全部

的位数,d代表小数的位数。如这样声明一个变量v(15,5),就代表这个变量整体长度15位,

小数点后有5位,很明显,整数部分应该是10位。

4 numeric

这个类型和decimal一模一样。

2.2.3 字符型

字符型变量是用来存储字母、数字符号、特殊符号等,在T-SQL中,字符型数据要用一

对英文单引号(‘’)引起,如’sql server 2005’。字符型数据声明的时候就需要给它指定长度,如

char(5),char是类型,5是数据长度。

1 char

Char类型存储的均为ANSI字符,其中每个字符占一个字节,n的最大长度为8000。Char

定义的数据固定长度,若实际数据长度不够定义长度,会在数据后面自动补齐空格。若超出

定义长度,则截断超出的部分。如定义一个char型变量PhoneNumber(11),若有个电话号

码是123456六位,那么PhoneNumber=’123456’,依然是11位。

2 Nchar

与char的大部分属性均相似,唯一不同就是,nvhar存储的是unicode类型的字符,每

个字符占两个字节,所以n的最大长度只能是4000。还有一个不同点是,nchar数据赋值的

时候,需要有个N。如p=N’sql server 2005’。

3 Varchar

与char的大部分属性相同,唯一不同的是,一个varchar类型的变量的实际长度并不是

定义时候的长度,而是其实际长度,也就是说,和char比较,varchar减少了在字符末尾补

空格的这么个过程。如定义一个varchar型变量PhoneNumber(11),若有个电话号码是123456

六位,那么PhoneNumber=’123456’,现在这个varchar类型数据的长度就不是11位了,而

是6位。

4 nvarchar

与nchar类似,但与nchar不同的地方也是实际长度不取决于声明长度。

所以,在事先确定一系列数据的长度时,应该选择用char型或者nchar型。如国内邮

政编码。应该用char存储。这样效率会稍微高些,而对于那些事先不知道数据长度的列,

应该以varchar存储。

另外,在事先确认所存储的数据均为ANSI类型数据时,应该采取char或者varchar类

型存储,再不知情的情况下,应采取nchar或者nvarchar存储。这样能够保证在跨语言系统

使用数据时不会发生乱码。

2.2.4 布尔型

1 bit

bit类型是T-SQL的布尔类型,其数据占一个字节,值为0或者1,若为0和1以外的任

何值,则视为1。

2.2.5 二进制类型

1 binary

与char类型相似,不同的是,存储的字符均为二进制类型,以“0x”开头。

2 Varbinar

与varchar类型类似,不同的是,存储的字符均为二进制类型,以“0x”开头。

2.2.6 文本和图像类型

1 text

text类型用来存储大容量字符数据,理论上可以存储2^31-1个字节的字符数。每个字

符均为ANSI编码。常见的如新闻文章内容,一般采取这种类型存储。

2 ntext

ntext存储的是unicode类型的字符,故其理论容量上限为2^30-1个字节。

3 image

与text类型类,不同的是,存储的字符均为二进制类型,以“0x”开头。

4 varchar(max)

varchar(max)的存储能力和text一样,但是,其有两个重要优势。第一、这些大值数据

和sql server的基本类型varchar一样,能够很好的提高查询效率。第二、以往对varchar的

一切函数如len等均不能使用在text上,而在varchar(max)均能使用,大大增加了数据的灵

活性。

5 nvarchar(max)

与varchar(max)类似,只是存储的字符为unicode类型的,故容量为2^30-1个字节。

6 varbinary(max)

与varchar(max)类型类似,不同的是,存储的字符均为二进制类型,以“0x”开头。

2.2.7 日期

1 datetime

datetime类型是日期和时间的结合体。每个datetime类型数据占8个字节。存储时间

范围从1753年到9999年,跨度很大。并且能够精确到三百分之一秒。

2 smalldatetime

smalldatetime类型数据占4个字节,存储时间范围从1900年到2079年,跨度小,并

且其职能精确到分钟,以30秒为界进行四舍五入。如22:28:30,则smalldatetime类型的时

间显示为22:29:00。

2.2.8 特殊类型

1 money

存储的位小数点后4位的decimal类型的数据,取值范围从-2^63~2^63-1,每个money

类型数据占8个字节。

2 smallmoney

smallmoney与money类型相同,不同的是其取值范围更小,为-2^31~2^31-1,并且每

个smallmoney类型的数据占4个字节。

3 timestamp

timestamp是一个二进制的数,相当于binary(8)或者varchar(8),其代表整个数据库中唯

一的一个数值。相当于数据库的全局变量。