DB2内置基本类型主要分为四大类:数值、字符串、日期时间和XML。除上述外,还支持用户自定义类型,比如数组类型、游标类型、Row、大对象LOB等。

一、数值型


类型分类

类型名称

范围

整型

smallint

1、16bit

2、[-32768,32768]


integer

1、4bytes,32bit

2、[-2147483648,2147483647]


int

等同于integer

bigint

1、8bytes,64bit

2、[-9223372036854775808,9223372036854775807]


小数型

decimal(p,s)

1、一个十进制数

2、p为精度,表示十进制数的总位数,p小于32

3、小数型的值压缩的十进制数

4、小数型最大精度p为31位

5、decimal小数位超过自动截断,遵循四舍五入


decimal

p默认5,s默认0


dec(p,s)



numeric(p,s)



num(p,s)


十进制浮点数

decfloat(16)

1、最大指数384:

[-9.999999999999999E+384,9.999999999999999E+384]

2、最小指数-383:

[-1.000000000000000E-383,1.000000000000000E-383]

3、最小正值次正规数:1*10的-398次方

4、十进制浮点数特殊值:NAN、-NAN、SNAN、-SNAN、INFINITY和-INFINITY。

5、次正规数:指数小于最小指数的非零数字。


decfloat(34)

1、最大指数6144:

[-9.999999999999999999999999999999999E+6144,9.999999999999999999999999999999999E+6144]

2、最小指数-6143:

[-1.000000000000000000000000000000000E-6143,1.000000000000000000000000000000000E-61431

3、最小正值次正规数:1*10的6176次方

4、最小正值正规数:
1.000000000000000000000000000000000*10的-6143次方

单精度浮点数(近似)

real

1、最大指数38:[-3.402E+38,+3.402E+38]

2、最小指数-37:[-1.175E-37,+1.175E-37]

双精度浮点数(近似)

double

1、最大指数308:[-1.79769E+308,+1.79769+308]

2、最小指数-307:[-2.225E-307,+2.225E-307]


double precision



float


二、字符串类型


类型分类

类型名称

是否可变

范围

字符字符串

char

否,定长

1、bytes:254

2、codeunits32:63


varchar

是,变长

1、bytes:32672

2、codeunits32:8168

3、按页面大小限制,每页开销176bytes

(1)4K:3920bytes

(2)8K:8016bytes

(3)16K:16208bytes

(4)32K:32592bytes

4、数据库配置extended_row_sz参数为enable,则varchar最大字节数为1048319

long varchar

--不推荐,未来可能除去

bytes:32700



clob

是,变长

1、bytes:2147483647

2、codeunits32:536870911

图形字符串

graphic

否,定长

1、bytes(双字节字符)|codeunits16:127

2、codeunits32:63


vargraphic

否,定长

1、bytes(双字节字符)|codeunits16:16336

2、codeunits32:8168

3、按页面大小限制,每页开销176bytes

(1)4K:1960bytes

(2)8K:4008bytes

(3)16K:8104bytes

(4)32K:16296bytes

4、数据库配置extended_row_sz参数为enable,则varchar最大字节数为1048319


long vargraphic

--
不推荐,未来可能除去

bytes(双字节字符):16350

dbclob

否,定长

1、bytes(双字节字符)|codeunits16:1073741823

2、codeunits32:536870911


二进制字符串

blob

是,变长

bytes:2147483647

本地字符映射配置

nchar_mapping

--

1、Unicode数据库,根据nchar_mapping的值来定义长度:

(1)char_cu32

1)nchar是char(codeunits32)的同义词

2)nvarchar是varchar(codeunits32)的同义词

3)nclob是clob(codeunits32)的同义词

(2)graphic_cu32

1)nchar是graphic(codeunits32)的同义词

2)nvarchar是vargraphic(codeunits32)的同义词

3)nclob是dbclob(codeunits32)的同义词

(3)graphic_cu16

1)nchar是graphic(codeunits16)的同义词

2)nvarchar是vargraphic(codeunits16)的同义词

3)nclob是dbclob(codeunits16)的同义词

2、非Unicode数据库:not applicable

1、修改本地映射配置步骤:

(1)在DB2命令窗口执行db2 get db cfg for  数据库的名称

(2)查看nchar_maping的值

(3)在DB2命令窗口执行db2 update cfg for 数据库的名称 using nchar_mapping nchar_mapping的值

(4)修改成功后,断开所有应用程序与数据库的连接

2、修改本地字符映射配置应注册以下几点:

(1)因测试,断开连接后重启了DB2服务

(2)修改本地字符映射配置,需要执行refresh table刷新查询,执行set integrity检查并更新表中不满足约束的数据,删除、注册绑定并重新创建所有可能受影响的基于表达的索引,避免索引中的值不正确。

三、日期时间型


类型分类

类型名称

范围

日期类型

date

[0001-01-01,9999-12-31]

时间类型

time

[00:00:00,24:00:00]

日期时间类型

timestamp

1、[0001-01-01 00:00:00.000000000000,9999-12-31 24:00:00.000000000000]

2、[0001-01-01 00:00:00,9999-12-31 24:00:00]

四、其他类型


类型分类

类型名称

范围

备注

可扩展标记语言

XML

1、级别,xml文档的最大深度(以级别计):125

2、bytes,xml模式文档的最大大小:31457280

可在创建表结构时直接定义xml类型

布尔值

boolean

创建表结构直接定义布尔型,报错

2021.09.30所测试版本DB2 V10

大对象

LOB

1、指blob、clob或dbclob数据类型

2、在unicode中nclob是dbclob的同义词


特殊类型

datalink

datalink值可引用数据库外的文件