SQL Server 数据类型及示例

什么是数据类型?
数据类型 MS SQL Server 数据类型被定义为任何列或变量可以存储的数据类型。它是对象所包含的数据类型,例如整数、字符或字符串。创建任何列或变量时,都需要定义数据类型。 表 or 变量除了指定名称外,还可以设置它将存储的数据类型。
如何使用 MS SQL 数据类型
您需要预先定义列或变量可以存储的数据类型。确定数据类型还可以防止用户输入任何意外或无效的数据。
您可以通过为变量或列分配适当的数据类型来有效地利用内存,这样只会为该列的数据分配所需的系统内存量。
MS SQL 提供多种基本数据类型 SQL 以满足用户需求,例如日期、二进制数据、图像等。
为什么要使用数据类型?
以一个简单的网站应用程序注册页面为例。该页面包含三个输入字段:名字、姓氏和联系电话。
这里需要注意的是,在实际情况下:
- “名字/姓氏”将始终按字母顺序排列。
- “联系人”始终为数字。
下面的示例展示了注册表单中的这些字段。
从上图可以看出,将“名字/姓氏”定义为字符,“联系方式”定义为整数是合理的。
显然,在任何应用程序中,所有字段都包含一种或多种类型的数据,例如数字、字母、日期等等。
另请注意,不同的数据类型需要不同的内存。因此,为了更有效地利用内存,最好使用其将要存储的数据类型来定义列或变量。
MS SQL Server 中可用的数据类型
以下是 MS SQL Server 数据类型列表。MS SQL Server 支持以下几类数据类型:
- 精确数字
- 近似数值
- 日期和时间
- 字符串
- Unicode 字符串
- 二进制字符串
- 其他数据类型
下图将 MS SQL Server 数据类型分为以下几类。
SQL 中的精确数字数据类型
SQL Server 中的精确数值类型有九种子数据类型。每种类型都存储定义范围内的整数或定点数。
| 数据类型 | 描述 | 下限 | 上限 | 内存 |
|---|---|---|---|---|
| 比金特 | 它存储给定范围内的整数 | −2^63 (−9,223,372,036,854,775,808) | 2^63−1 (9,223,372,036,854,775,807) | 8字节 |
| INT | 它存储给定范围内的整数 | −2^31 (−2,147,483,648) | 2^31−1 (2,147,483,647) | 4字节 |
| Smallint | 它存储给定范围内的整数 | −2^15 (−32,768) | 2^15−1 (32,767) | 2字节 |
| 小灵通 | 它存储给定范围内的整数 | 0 | 255 | 1字节 |
| 位 | 它可以取 0、1 或 NULL 值。 | 0 | 1 | 1 字节/8 位列 |
| 十进制 | 用于比例和固定精度数字 | −10^38+1 | 10^38−1 | 5 到 17 个字节 |
| 数字 | 用于比例和固定精度数字 | −10^38+1 | 10^38−1 | 5 到 17 个字节 |
| 钱 | 用于货币数据 | - 922,337,203,685,477.5808 | +922,337,203,685,477.5807 | 8字节 |
| 小钱 | 用于货币数据 | - 214,478.3648 | +214,478.3647 | 4字节 |
SQL Server 中的精确数值数据类型示例:
查询:
DECLARE @Datatype_Int INT = 2 PRINT @Datatype_Int
输出:
2
语法:
Decimal (P,S)
其中,P 为精度,S 为尺度。
查询:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31 PRINT @Datatype_Decimal
输出:
2.31
SQL 中的近似数值数据类型
SQL近似数值类别包括浮点数和实数。这些数据类型主要用于科学计算。
| 数据类型 | 描述 | 下限 | 上限 | 内存 | 平台精度 |
|---|---|---|---|---|---|
| 浮点数(n) | 用于浮点精度数 | −1.79E+308 | 1.79 + 308 | 取决于 n 的值 | 15位数 |
| 真实 | 用于浮点精度数 | −3.40E+38 | 3.40 + 38 | 4字节 | 7位数 |
float 类型使用以下语法:
Syntax: FLOAT [(n)]
这里,n 是用于存储科学计数法表示的浮点数尾数的位数。n 的默认值为 53。
当您定义像 float 这样的数据类型时,n 应该是介于 1 和 53 之间的值。SQL Server 将 n 视为以下两个可能值之一:如果 1<=n<=24,则 n 被视为 24;如果 25<=n<=53,则 n 被视为 53。
查询示例:
DECLARE @Datatype_Float FLOAT(24) = 22.1234 PRINT @Datatype_Float
输出:
22.1234
SQL 中的日期和时间数据类型
此类别存储日期和时间类型的数据。
| 数据类型 | 描述 | 收纳尺寸 | 准确性 | 较低范围 | 上限范围 |
|---|---|---|---|---|---|
| 约会时间 | 用于指定从 1 年 1753 月 31 日到 9999 年 3.33 月 XNUMX 日的日期和时间。其精度为 XNUMX 毫秒。 | 8字节 | 四舍五入为 .000、.003、.007 的增量 | 1753-01-01 | 9999-12-31 |
| 小日期时间 | 用于指定 1900 年 1 月 1 日至 2079 年 6 月 6 日之间的日期和时间。精度为 1 分钟。 | 4字节,固定 | 1分钟 | 1900-01-01 | 2079-06-06 |
| 日期 | 仅用于存储公元 0001 年 1 月 1 日至 9999 年 12 月 31 日之间的日期。 | 3字节,固定 | 1 天 | 0001-01-01 | 9999-12-31 |
| 次 | 仅用于存储时间值,精度为 100 纳秒。 | 5字节 | 100纳秒 | 00:00:00.0000000 | 23:59:59.9999999 |
| 日期时间偏移 | 与 datetime 类似,但有时区偏移。 | 10字节 | 100纳秒 | 0001-01-01 | 9999-12-31 |
| 日期时间2 | 用于指定从 1 年 0001 月 31 日到 9999 年 XNUMX 月 XNUMX 日的日期和时间 | 6字节 | 100纳秒 | 0001-01-01 | 9999-12-31 |
查询示例:
DECLARE @Datatype_Date DATE = '2030-01-01' PRINT @Datatype_Date
输出:
“2030-01-01”
SQL 中的字符串数据类型
此类别与字符类型相关。它允许您定义固定长度和可变长度的字符数据。它包含四种数据类型。以下是字符串数据类型及其示例。
| 数据类型 | 描述 | 下限 | 上限 | 内存 |
|---|---|---|---|---|
| 坦克 | 固定宽度的字符串,最多可存储8,000个字符。 | 0 个字符 | 8000 个字符 | n 字节 |
| VARCHAR | 这是一个长度可变的字符串。 | 0 个字符 | 8000 个字符 | n 字节 + 2 字节 |
| varchar(最大) | 这是一个可变宽度的字符串。它最多可存储 1,073,741,824 个字符。 | 0 个字符 | 2^31 个字符 | n 字节 + 2 字节 |
| 文本 | 这是一个可变宽度的字符串,最多可存储 2 GB 的文本数据。 | 0 个字符 | 2,147,483,647 个字符 | n 字节 + 4 字节 |
查询示例:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype' PRINT @Datatype_Char
输出:
这是字符数据类型
SQL 中的 Unicode 字符串数据类型
该类别存储了所有 Unicode 字符,这些字符使用 UTF-16 字符编码。
| 数据类型 | 描述 | 下限 | 上限 | 内存 |
|---|---|---|---|---|
| 纳查尔 | 这是一个固定宽度的Unicode字符串。 | 0 个字符 | 4000 个字符 | 2 乘以 n 字节 |
| 无功字符 | 这是一个可变宽度的Unicode字符串。 | 0 个字符 | 4000 个字符 | 2 乘以 n 字节 + 2 字节 |
| 文字 | 这是一个可变宽度的Unicode字符串。 | 0 个字符 | 1,073,741,823 个字符 | 字符串长度的 2 倍 |
查询示例:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype' PRINT @Datatype_nChar
输出:
这是 nCharacter 数据类型
SQL 中的二进制字符串数据类型
此类别包含固定长度和可变长度的二进制字符串。
| 数据类型 | 描述 | 下限 | 上限 | 内存 |
|---|---|---|---|---|
| 二进制 | 这是一个固定长度的二进制字符串,最多可存储 8,000 字节。 | 0字节 | 8000字节 | n 字节 |
| 二进制 | 这是一个可变宽度的二进制字符串,最多可存储 8,000 字节。 | 0字节 | 8000字节 | 实际输入数据的长度+2个字节 |
| 图片 | 这是一个可变宽度的二进制字符串,最大存储容量为 2 GB。 | 0字节 | 2,147,483,647字节 | - |
查询示例:
DECLARE @Datatype_Binary BINARY(2) = 12; PRINT @Datatype_Binary
输出:
0x000C
SQL 中的其他数据类型
以下是其他 SQL Server 数据类型及其说明:
| 数据类型 | 描述 |
|---|---|
| 光标 | 它的输出是 sp_cursor_list 和 sp_describe_cursor 两列,返回游标变量的名称。 |
| 行版本 | 它为表格行添加版本号。 |
| 阶层 | 此数据类型表示层级结构中的位置。 |
| 唯一标识符 | 存储 GUID,通常由字符表达式转换而来。 |
| Sql_variant | 它存储 SQL Server 支持的数据类型的值。 |
| XML | 它将 XML 数据存储在一列中。 |
| 空间几何类型 | 它在平面坐标系中表示数据。 |
| 空间地理类型 | 它表示地球坐标系中的数据。 |
| 表 | 它存储结果集以供稍后处理。 |
有趣的事实!
- 在检索数据时,CHAR 数据类型比 VARCHAR 数据类型速度更快,因为它的固定宽度避免了长度记录。ping.


