SQL Server (Transact-SQL) 数据类型是一个属性,它创建指定表时将存储在每个列中的数据类型。数据类型是 SQL Server 了解每个列中期望的数据类型的指南,它还是标识SQL Server 将如何与存储的数据进行交互。

在 SQL Server (Transact-SQL) 中,数据类型主要可以分为四类:

  • 字符串数据类型
  • 数字数据类型
  • 日期和时间数据类型
  • 其他数据类型

字符串数据类型

数据类型描述
CHAR(size)固定宽度字符串数据类型。其大小最多可达 8000 个字符。
VARCHAR(size)可变宽度字符串数据类型。其大小最多可达 8000 个字符。
VARCHAR(max)可变宽度字符串数据类型。其大小最多可达 231-1 个字符。
TEXT可变宽度字符串数据类型。其大小最大可达 2GB 文本数据。
NCHAR(size)固定宽度 Unicode 字符串数据类型。其大小最多可达 4000 个字符。
NVARCHAR(size)可变宽度 Unicode 字符串数据类型。其大小最多可达 4000 个字符。
NVARCHAR(max)可变宽度 Unicode 字符串数据类型。其大小最多可达 231-1 个字符。
NTEXT可变宽度 Unicode 字符串数据类型。其大小最大可达 2GB 文本数据。
BINARY(size)固定的二进制字符串数据类型。它的大小最多可达 8000 字节。
VARBINARY(size)可变宽度二进制字符串数据类型。其大小最多可达 8000 字节。
VARBINARY(max)可变宽度二进制字符串数据类型。其大小最多可达 231-1 个字符。
IMAGE可变宽度二进制字符串数据类型。其大小最大可达 2GB。

数字数据类型

数据类型描述
BIT整数,可以为 0、1 或 null。
TINYBIT0 到 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 之间的整数。
FLOAT(n)浮动精度数字数据从 -1.79E+308 到 1.79E+308。 n 参数指示该字段是否应保存 4 个字节或 8 个字节。 n的默认值为53。
REAL从-3.40E+38到3.40E+38的浮点精度数字数据。
SMALLMONEY用于指定从 - 214,748.3648 到 214,748.3647 的货币数据。
MONEY用于指定从-922,337,233,685,477.5808到922,337,203,685,477.5807的货币数据。
DECIMAL(p, s)固定精度和小数位数。要存储的小数位数的最大总数由 p 指定。小数点右侧存储的小数位数由 s 指定。使用最大精度时,有效值范围为 - 1038 +1 到 1038 - 1。
DEC (p, s)与 DECIMAL(p, s) 相同。
NUMERIC(p, s)与DECIMAL(p, s)。

日期和时间数据类型

数据类型描述
DATETIME日期和时间组合。格式:"YYYY-MM-DD hh:mm:ss[.mmm]"。它支持的范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。
DATETIME2日期和时间组合。格式:"YYYY-MM-DD hh:mm:ss[.小数秒]"。它支持的范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒。
DATE日期。格式:"年-月-日"。支持范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日。
TIME时间。格式:"YYYY-MM-DD hh:mm:ss[.nnnnnnn]"。用于存储时间,精度仅为 100 纳秒。值范围从"00:00:00.0000000"到"23:59:59.9999999"。
DATETIMEOFFSET日期和时间组合并添加时区基于 UTC(通用时间坐标或格林威治标准时间)的意识。格式:"YYYY-MM-DD hh:mm:ss[.nnnnnnn]"[{+|-}hh:mm]。它支持的范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒。
SMALLDATETIME日期和时间组合。格式:"YYYY-MM-DD hh:mm:ss"。支持范围从1900年1月1日到2079年6月6日,精度为1分钟。

其他数据类型

数据类型描述
sql_variant用于除text、timestamp 和ntext 之外的各种数据类型。它最多可存储 8000 字节的数据。
XML存储 XML 格式的数据。最大 2GB。
cursor存储对用于数据库操作的游标的引用。
hierarchyid可变长度的系统数据类型。用于表示层次结构中的位置。
rowversion通常用作版本标记表行的机制。存储大小为8字节。
table存储结果集以供以后处理。
uniqueidentifier存储GUID(全局唯一标识符)。
Spatial Geometry Types
用于表示平面坐标系中的数据。
Spatial Geography Types
用于存储椭球体(圆形地球)数据,例如GPS纬度和经度坐标。