SQL Server 数据类型
以下部分介绍 SQL Server 支持的数据类型。
SQL Server 数据类型
Microsoft SQL Server 支持的数据类型可以分为三大类:字符串, 数值 和 日期/时间 数据类型。
字符串数据类型
字符串数据类型通常用于存储名称、地址、描述或任何包含字母和数字的值,包括二进制数据,如图像或音频文件。
数据类型 | 说明 |
---|---|
char(n) |
存储固定长度的字符串。 最大长度 8,000 个字符。 |
varchar(n) |
存储可变长度的字符串。 最大长度 8,000 个字符。 |
varchar(max) |
存储可变长度的字符串。 这里,max 表示最大存储大小为2GB。 |
text |
存储可变长度的字符串。 最大存储大小为 2 GB。 |
nchar |
存储固定长度的 Unicode 字符串。 最大长度 4,000 个字符。 |
nvarchar |
存储可变长度的 Unicode 字符串。 最大长度 4,000 个字符。 |
nvarchar(max) |
存储可变长度的 Unicode 字符串。 这里,max 表示最大存储大小为2GB。 |
ntext |
存储可变长度的 Unicode 字符串。 最大存储大小为 2 GB。 |
binary(n) |
存储固定长度的二进制数据。 最大存储大小为 8,000 字节。 |
varbinary(n) |
存储可变长度的二进制数据。 最大存储大小为 8,000 字节。 |
varbinary(max) |
存储可变长度的二进制数据。 这里,max 表示最大存储大小为2GB。 |
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 或 小数位数表示可以存储到小数点右侧的最大位数。 从 p 中减去该数字以确定小数点左侧的最大位数。 小数位数必须是从 0 到 p 的值。 默认比例为 0。
例如,price decimal(6,2)
列可以存储任何具有六位数字和两位小数的值,即范围从 -9999.99 到 9999.99。
日期和时间数据类型
日期和时间数据类型通常用于存储数据,如出生日期、招聘日期、在表内创建或更新记录的日期和时间等。
数据类型 | 说明 |
---|---|
date |
存储从 0001-01-01(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(1 月 1 日)到 9999-12-31(9999 年 12 月 31 日)。 |
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 中,timestamp 是 rowversion 数据类型的同义词,它在数据库中自动生成唯一的二进制数。 rowversion 通常用于版本标记表行。 |
注意: 每次在表中插入或修改具有 rowversion
列的行时,都会在 rowversion
列中插入递增的数据库 rowversion 值。 一个表只能有一个 rowversion
列。
Advertisements