发布时间:2026-02-04 08:32:22 浏览次数:0
有许多类型的数据与 SQL Server 兼容,重要的是要了解它们是什么以避免不兼容的数据类型出现问题。理解兼容的数据类型也是理解数据类型优先级的基础,它决定了在处理两种不同类型的对象时会产生什么类型的数据。 在本指南中,我们将介绍 SQL Server 支持的所有数据类型,以及使用 Transact-SQL 或 Microsoft .NET Framework 定义自定义数据类型的过程。
在深入了解 SQL Server 支持的许多数据类型之前,先快速回顾一下 SQL Server 是什么。Microsoft 开发了 SQL Server 作为关系数据库管理系统 (RDBMS)。SQL Server 使用 SQL,这是使用各种关系数据库的标准语言。 Microsoft 的 SQL Server 不再专属于 Windows 环境,现在可以在 Linux 上使用,这对于有兴趣使用 SQL Server 的人来说是个好消息。此外,微软的云平台 Azure 支持 SQL Server。因此,如果您需要一个地方来托管它,那么没有比原生解决方案更好的地方了。
微软将其称为“最了解 SQL Server 的云”,Azure SQL Server 确实受益于无缝集成、简单性和可靠性,因为服务器和云基础设施都是由同一家公司开发和维护的。 但是,无论您在何处托管 SQL Server,都必须注意 SQL Server 使用的 SQL 语言略有不同。Microsoft 开发了 Transact-SQL (T-SQL),它与标准 SQL 非常相似,但定义了一组对 SQL Server 编程所必需的专有概念。 如果您熟悉 SQL,则使用 Transact-SQL 并不难,您将能够轻松使用 SQL Server。但有效使用 SQL Server 的另一个关键方面是了解它支持的所有数据类型。
错误的数据类型会导致数据库性能、查询优化和数据截断等问题。这些问题通常是开发团队首先意识到的,因为它们是跟踪速度和性能的问题。尽管如此,问题可能会蔓延到整个组织,导致数据完整性问题和其他严重挑战。 如果您是 SQL Server 的新手,那么数据类型的绝对数量可能会让人不知所措。
但是,它们组织得井井有条并且有据可查,只要您了解计划存储的数据类型,就可以更容易地找到所需的内容。当然,虽然您可以随时参考,但获得 SQL Server 数据类型的知识对于长期的效率和优化至关重要。深入研究后,您会发现存在一些重叠,并且只有在您完全了解所有选项的情况下,才能知道何时选择浮点数而不是十进制数或选择可变长度而不是固定值。
下面是 SQL Server 中每个数据类别的概览,以及适合每个数据类型的所有数据类型。
精确数字
使用精确的数字数据类型时,了解您的选项很重要,这样您就可以选择适合您的用例的最小数据类型。还需要选择与您存储的数字类型相对应的数据类型,例如货币的货币或小货币。
Unicode 字符串
如果您不熟悉 Unicode,它是一种通用标准,它为每个字符分配一个较早编号,从而允许对书面文本进行一致的编码和表示。例如,Unicode 中的“嘿”将被分解如下:U+0048(“H”)、U+0065(“E”)和 U+0059(“Y”)。SQL Server 支持使用这些字符串的所有 Unicode 字符数据。它们可以是固定的或可变的。
近似数值
当数值数据不能精确表示时,它被称为“浮点”数值数据,您可以使用近似数数据类型来存储它。对于浮点数据类型,数字使用科学计数法写入,因此 825,000 将存储为 8.5 x 10 5。浮点数可以非常大或非常小。浮点数和十进制数据类型都可以存储带有小数的数字——不同之处在于浮点数需要更少的存储空间,而小数则更精确。SQL Server 支持浮点数和实数数据类型的两种近似数值。
字符串
字符串有一个不言自明的名称:这些数据类型用于存储字符。它们的大小可以是固定的或可变的。
二进制字符串
二进制数据类型支持固定或可变的数据字符串。字符串和二进制字符串之间的区别在于它们包含的数据:字符串通常存储文本,但也可以存储数字或符号。二进制字符串通常以字节的形式存储非传统数据,例如图片。
日期和时间
这些数据类型明确设计用于存储日期和时间。有些支持时区意识,有些则不支持。在处理日期和时间时,选择一种保持条目格式一致的数据类型并选择一种足够灵活以支持您需要的详细程度(即一天中的时间、时区等)的数据类型至关重要。
SQL Server 中存在其他数据类型,但它们并不完全适合上述任何类别。因此,这些数据类型仅存在于“其他”下。其他数据类型包括:
如果您的自定义数据类型在上述任何类别中都不是特定的,您仍然可以将其带到 SQL Server 上,只要您提前设置它。使用 Transact-SQL 或 Microsoft .NET Framework,开发人员可以为他们的项目定义自定义数据类型。
在创建自定义数据类型时,SQL Server 的界面有一些工具可以帮助您生成 Transact-SQL。您需要指定的字段包括架构、名称、基础数据类型、长度、允许空值、字节大小、默认值中的可选字段以及数据类型必须遵循的任何规则。例如,电子邮件字段可能会使用 varchar 基础类型,并且必须包含 @ 和 .,以及不允许使用的字符列表。然后,您将设置一个适合您需要的最大长度,并且字节数将自动填充到界面中。
如果您需要创建自己的数据类型,Microsoft 会提供更多信息。
使用 SQL Server 时,为正在使用的任何数据选择正确的数据类型至关重要。不这样做可能会导致数据质量问题或数据丢失,例如在您使用数据类型来存储不打算这样做的日期和时间的情况下。错误的数据类型也会对查询和性能产生负面影响。
例如,如果您需要存储整数,您可能会认为只需选择精确的数字数据类型就不会出错。但是,不必要地使用 bigint 类型来存储像年龄这样的小而简单的数字会导致资源浪费。
大多数人会告诉您在处理数字数据时从 smallint、integer、bigint 或 decimal 中进行选择。如果您正在处理非常大的数字,他们可能会建议 decfloat 或 float。但是,当您处理特定用例时,此建议过于简单和笼统。