SQL Server 数据类型

以下各节描述了SQL Server支持的数据类型。

SQL Server数据类型

Microsoft SQL Server支持的数据类型可以分为三个主要类别:字符串数字日期/时间数据类型。

字符串数据类型

字符串数据类型通常用于存储名称,地址,描述或任何包含字母和数字的值,包括二进制数据,例如图像或音频文件。

数据类型描述
char(n)存储定长字符串。最大长度为8,000个字符。
varchar(n)存储长度可变的字符串。最大长度为8,000个字符。
varchar(max)存储长度可变的字符串。此处,max表示最大存储大小为2 GB。
text存储长度可变的字符串。最大存储大小为2 GB。
nchar存储固定长度的Unicode字符串。最大长度为4,000个字符。
nvarchar存储可变长度的Unicode字符串。最大长度为4,000个字符。
nvarchar(max)存储可变长度的Unicode字符串。此处,max表示最大存储大小为2 GB。
ntext存储可变长度的Unicode字符串。最大存储大小为2 GB。
binary(n)存储固定长度的二进制数据。最大存储大小为8,000字节。
varbinary(n)存储可变长度的二进制数据。最大存储大小为8,000字节。
varbinary(max)存储可变长度的二进制数据。此处,max表示最大存储大小为2 GB。
image存储可变长度的二进制数据。最大存储大小为8,000字节。

数值数据类型

数值数据类型通常用于存储价格,薪水等数据。

数据类型描述
bit允许您存储值1、0或NULL
tinyint存储0到255之间的整数值。
smallint存储从-32,768到32,767范围内的整数值。
int存储从-2,147,483,648到2,147,483,647范围内的整数值。
bigint存储从-9,223,372,036,854,775,808到9,223,372,036,854,775,807的整数值。
decimal(p,s)存储固定的精度和小数位数。有效值为10 ^38 +1到10 ^38-1。有关更多详细信息,请参见下文。
numeric(p,s)numeric数据类型功能上等同于decimal。
smallmoney允许您精确存储货币值或货币值,范围为-214,748.3648至214,748.3647。
money允许您精确存储货币值或货币值,范围为-922,337,203,685,477.5808至922,337,203,685,477.5807。
float(n)存储浮点数值。有效值为-1.79E + 308至-2.23E-308、0和2.23E-308至1.79E + 308。
real存储浮点数值。有效值为-3.40E + 38至-1.18E-38、0和1.18E-38至3.40E + 38。

在声明一个decimal或numeric列时,可以指定精度和小数位数,比如decimal(p,s)或numeric(p,s),其中p或精度表示可以存储的最大位数,包括小数点的左边和右边。精度必须是从1到38的值。默认的精度是18。

s或scale表示可以存储在小数点右边的最大位数。从p减去该数字,以确定小数点左边的最大位数。 小数位数必须为0到p之间的值。 默认比例为0。

例如,price decimal(6,2)列可以存储具有六位数字和两个小数的任何值,即-9999.99到9999.99之间的值。

日期和时间数据类型

日期和时间数据类型通常用于存储数据,例如出生日期,雇用日期,在表内创建或更新记录时的日期和时间等。

数据类型描述
date存储日期值,范围为0001-01-01(1月1日,1月)至
9999-12-31(9999年12月31日)。
time存储一天中的时间,精度为100纳秒。有效值为00:00:00.0000000到23:59:59.9999999。
datetime存储组合的日期和时间值,精度为3.33毫秒。的有效日期范围datetime是从1753-01-01(1753年1月1日)到9999-12-31(9999年12月31日)。
datetime2

datetime2是datetime数据类型的扩展,它具有更大的日期范围。datetime2的有效日期范围是从0001-01-01 (January 1, 1)到9999-12-31 (December 31, 9999)。

smalldatetime以1分钟的精度存储组合的日期和时间值。有效日期范围smalldatetime是从1900-01-01(1900年1月1日)到
2079-06-06(2079年6月6日)。
datetimeoffset与datetime2添加时区偏移量相同。默认格式为YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]。时区偏移的有效范围是-14:00到+14:00。
timestamp在SQL Server中,时间戳是rowversion数据类型的同义词,该类型在数据库中自动生成唯一的二进制数。  rowversion通常用于版本标记表行

注意:每次在表中插入或修改具有rowversion列的行时,数据库增量rowversion值都会插入到rowversion列中。 一个表只能有一个rowversion列。