以下各节描述了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 |
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列。