SQL 数据类型

SQL 数据类型是指定对象可以保存的数据类型的属性。例如,字符或字符串、二进制信息、整数、财务数据、日期和时间等。以下是用于存储地理数据的特殊数据类型。

  • Geometry 类型:用于在二维欧几里得坐标系统中表示数据
  • Geography 数据类型:此数据类型的与 Geometry 的功能相同。这些 SQL 数据类型之间的唯一区别是,当您使用 Geography 数据类型声明变量时,您将根据纬度和经度指定点。

可用的 SQL 数据类型列表

以下是可用的数据类型及其描述。请参阅 DATALENGTH 文章。

SQL Server 数值数据类型

以下是可用的数值数据类型列表。

数据类型描述Length
int存储范围从 -2,147,483,648 到 2,147,483,647 的整数值4 字节
tinyint存储范围从 0 到 255 的整数值1 字节
smallint接受范围从 -32,768 到 32,767 的整数值2 字节
bigint它存储范围从 -253 到 253 – 1 的整数值8 字节
money它存储范围从 -922,337,203,685,477.5808 到 -922,337,203,685,477.5807 的财务值8 字节
smallmoney它存储范围从 -214,748.3648 到 214,748.3647 的财务值4 字节
decimal(p,s)它存储十进制值。此处 p 是精度,s 是标度,最大精度值为 38 位数字。5 – 17 字节
numeric(p,s)此数据类型的与 decimal (p, s) 相同。5 – 17 字节
float(n)它存储浮点值,精度为 7 位数字(如果 n = 24),15 位数字(如果 n = 53)。5 – 17 字节。如果 n = 24,则使用 4 字节;如果 n = 53,则使用 8 字节。
real此数据类型的与 float(24) 相同。4 字节

SQL 字符和字符串数据类型

这些数据类型存储 n 个 Unicode 字符 2n 字节,其中 n 的范围是 1 到 4000。

数据类型描述和长度
char(n)它存储 n 个字符的字节,其中 n 的范围是 1 到 8000。
nchar(n)它存储大约 n 个字符的实际字符串长度 + 2 字节,其中 n 的范围是 1 到 8000。
varchar(n)它存储最多 231-1 个字符。长度 = 实际字符串长度 + 2 字节。
varchar(max)它存储大约 n 个字符 2n(实际字符串长度) + 2 字节,其中 n 的范围是 1 到 8000。
nvarchar(n)它存储最多 ((231-1) /2) – 2 个字符。
nvarchar(max)它存储最多 ((2n-1) /2) – 2 个字符。2n(实际字符串长度) + 2 字节。

SQL 二进制数据类型

数据类型描述Length
bit它存储单个位数据。对于 8 位列,使用 1 字节。
binary(n)它存储 n 字节的二进制数据。n 字节,其中 n 的范围是 1 到 8000。
varbinary(n)它存储大约 n 字节的二进制信息。实际字符串长度 + 2 字节,其中 n 的范围是 1 到 8000。
varbinary(max)它存储最多 231-1 字节的二进制信息。实际字符串长度 + 2 字节。

SQL 日期和时间数据类型

数据类型描述Length示例
date它存储公元 0001 年 01 月 01 日至公元 9999 年 12 月 31 日之间的日期。3 字节2016-08-19
DateTime它存储公元 1753 年 01 月 01 日至公元 9999 年 12 月 31 日之间的日期和时间。8 字节2016-08-19 10:15:45.0110
datetime2它存储公元 0001 年 01 月 01 日至公元 9999 年 12 月 31 日之间的日期和时间。6 – 82016-08-19 10:15:45.0110112
datetimeoffset它与 datetime2 相同,此外,它还将包含协调世界时 (UTC) 偏移量(我们也称为 GMT)。8 – 10 字节2016-08-19 10:15:45.0110112 +05:30
smalldatetime它存储公元 1990 年 01 月 01 日至公元 2079 年 06 月 06 日之间的日期和时间。4 字节2016-08-19
time它存储时间,精度为 100 纳秒。时间范围在 00:00:00.0000000 和 23:59:59.9999999 之间。3 – 5 字节10:15:45.0110136

SQL Server 中 Char 和 Varchar、NVarchar 数据类型之间的区别

以下部分通过每个数据类型的示例解释了区别。

Char 数据类型

Sql Server 中的字符或 Char 数据类型存储固定长度的字符。

例如,如果我们声明一个变量 @str CHAR (50),表示 Server 将为 50 个字符分配内存。假设我们将 10 个字符插入到 @str 变量中,将使用 10 个字符的内存,剩余的 40 个字符将被浪费。

SQL Server Varchar 数据类型

Varchar 数据类型表示可变字符,用于存储非 Unicode 字符。Varchar 根据插入的字符数分配内存。

例如,如果我们声明一个变量 @name VARCHAR (50),表示它将为 0 个字符分配内存。假设我们将 10 个字符插入到 @name 变量中。那么,此数据类型将分配内存来存储这 10 个字符(它分配 10 个字符,没有浪费)。如果您认为列大小可能超过 8000 字节,请使用 Varchar(max)。

SQL Server NVarchar 数据类型

NVarchar 数据类型与 Varchar 数据类型相同。它们之间的唯一区别是它用于存储 Unicode 字符。NVarchar 数据类型将占用双倍 (2n) 空间来存储其他语言字符。如果您认为列大小可能超过 4000 字节,请使用 nvarchar(max)。

注意:当您不存储其他语言字符时,我建议您选择 Varchar 数据类型而不是 char 或 NVarchar。