DB2 - 数据类型
Db2 - 数据类型
Section titled “Db2 - 数据类型”本章全面概述了Db2中可用的现代数据类型。选择正确的数据类型对于数据完整性、存储效率和查询性能至关重要。
在Db2数据库中,表中的每个列都被分配一个特定的数据类型。此数据类型定义了该列可以保存的数据种类(例如,数字、文本、日期)、其可能值的范围以及其存储格式。Db2提供了一套丰富且内置的数据类型,几乎可以满足任何需求。
内置数据类型
Section titled “内置数据类型”- SMALLINT:一个16位整数。范围:-32,768到+32,767。适用于范围小且已知的计数器或标志。
- INTEGER:一个32位整数。范围:-2,147,483,648到+2,147,483,647。主键或通用整数的非常常见选择。
- BIGINT:一个64位整数。用于非常大的整数,常用于大型系统中的ID或对精度要求很高的财务计算。
- DECIMAL(p, s) 或 NUMERIC(p, s):一个具有精确小数位数的打包十进制数。
p是总位数(精度),s是小数点右侧的位数(小数位数)。非常适合货币等财务数据,其中舍入误差是不可接受的。 - REAL:一个32位单精度浮点数。用于科学计算,其中绝对精度不如范围和性能重要。
- DOUBLE:一个64位双精度浮点数。提供比
REAL更高的精度和更大的范围。 - DECFLOAT:一个十进制浮点数。结合了
DECIMAL的精度和浮点数的范围,适用于现代财务和科学应用。
- CHAR(n):一个固定长度的字符串。如果存储的字符串短于
n,则会用空格填充。用于长度一致的数据,如国家代码(‘US’,‘CA’)。 - VARCHAR(n):一个最大长度为
n的可变长度字符串。这是最常见的字符串类型,因为它不存储填充字符,从而节省空间。 - CLOB(n):字符大对象(Character Large Object)。用于存储超过
VARCHAR最大长度(最大2 GB)的非常大的文本文档。 - GRAPHIC(n), VARGRAPHIC(n), DBCLOB(n):它们分别是
CHAR、VARCHAR和CLOB的双字节字符等效类型。它们用于存储UTF-16等字符集。
日期/时间类型
Section titled “日期/时间类型”- DATE:存储日期值(年、月、日)。
- TIME:存储时间值(小时、分钟、秒)。
- TIMESTAMP(p):存储日期和时间的组合,具有高达
p位(0到12)的秒小数精度。TIMESTAMP(6)常用于微秒精度。非常适合记录事件。
- BOOLEAN:存储
TRUE或FALSE值。在内部,它可以由1(真)和0(假)表示。比使用SMALLINT作为标志更具语义性。
二进制和半结构化类型
Section titled “二进制和半结构化类型”- BLOB(n):二进制大对象(Binary Large Object)。用于存储二进制数据,如图像、音频文件或序列化对象,最大2 GB。
- XML:存储格式良好的XML文档。Db2提供了强大的函数,可以使用XQuery和XPath直接查询和操作XML文档中的数据。
- JSON:一种用于以JavaScript对象表示法(JSON)格式存储数据的现代补充。Db2提供SQL/JSON函数来查询和处理JSON文档,使其成为Web应用程序和API集成的理想选择。注意:它以BLOB、CLOB或VARCHAR的形式存储,并提供特定的函数来以JSON形式与其交互。
最佳实践:选择正确的数据类型
Section titled “最佳实践:选择正确的数据类型”选择最合适的数据类型是一个关键的设计决策:
- 具体化:始终选择能可靠容纳列所有可能值的最小数据类型。对一个永远不会超过1000的列使用
BIGINT是低效的。 - 优先选择
VARCHAR而非CHAR:除非您的数据长度始终固定,否则VARCHAR通常更节省空间。 - 财务数据使用
DECIMAL:切勿将浮点类型(REAL、DOUBLE)用于货币或财务计算,以避免潜在的舍入误差。 - 事件记录使用
TIMESTAMP:对于记录事件发生的时间,TIMESTAMP优于DATE,因为它包含高精度的时间信息。