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 – 8 | 2016-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。