全面了解db2数据库中的各数据类型

db2内置数据类型可以分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)或日期时间型(datetime)。还有一种叫做 datalink 的特殊数据类型。datalink 值包含了对存储在数据库以外的文件的逻辑引用。

数值型数据类型包括 smallint、integer、bigint、decimal(p,s)、real 和 double。所有数值都有符号和精度。精度是指除符号以外的二进制或十进制的位数。如果数字的值大于等于零,就认为符号为正。

*小整型,smallint:小整型是两个字节的整数,精度为 5 位。小整型的范围从 -32,768 到 32,767。

*大整型,integer 或 int:大整型是四个字节的整数,精度为 10 位。大整型的范围从 -2,147,483,648 到 2,147,483,647。

*巨整型,bigint:巨整型是八个字节的整数,精度为 19 位。巨整型的范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

*小数型,decimal(p,s)、dec(p,s)、numeric(p,s) 或 num(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded decimal,bcd)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。最大精度是 31 位。小数型的范围从 -10**31+1 到 10**31-1。

*单精度浮点数(single-precision floating-point),real:单精度浮点数是实数的 32 位近似值。数字可以为零,或者在从 -3.402e+38 到 -1.175e-37 或从 1.175e-37 到 3.402e+38 的范围内。

*双精度浮点数(double-precision floating-point),double,double precision 或 float:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -1.79769e+308 到 -2.225e-307 或从 2.225e-307 到 1.79769e+308 的范围内。

字符串是字节序列。字符串包括 char(n) 类型的定长字符串和 varchar(n)、long varchar 或 clob(n) 类型的变长字符串。字符串的长度就是序列中的字节数。

*定长字符串,character(n) 或 char(n):定长字符串的长度介于 1 到 254 字节之间。如果没有指定长度,那么就认为是 1 个字节。

*变长字符串,varchar(n)、character varying(n) 或 char varying(n):varchar(n) 类型的字符串是变长字符串,最长可达 32,672 字节。

*long varchar:long varchar 类型的字符串是变长字符串,最长可达 32,700 字节。

*字符大对象字符串(character large object string),clob(n):clob 是变长字符串,最长可以达到 2,147,483,647 字节。如果只指定了 n,那么 n 的值就是最大长度。如果指定了 nk,那么最大长度就是 n*1,024(n 的最大值为 2,097,152)。如果指定了 nm,那么最大长度就是 n*1,048,576(n 的最大值为 2,048)。如果指定了 ng,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。clob 用于存储基于大单字节字符集(single-byte character set,sbcs)字符的数据或基于混合(多字节字符集(mbcs)和 sbcs)字符的数据。图形字符串是表示双字节字符数据的字节序列。图形字符串包括类型为 graphic(n) 的定长图形字符串和类型为 vargraphic(n)、long vargraphic 和 dbclob(n) 的变长图形字符串。字符串的长度就是序列中双字节字符的数目。

*定长图形字符串,graphic(n):定长图形字符串的长度介于 1 到 127 个双字节字符之间。如果没有指定长度,就认为是 1 个双字节字符。

*变长图形字符串,vargraphic(n):vargraphic(n) 类型的字符串是变长图形字符串,最大长度可达 16,336 个双字节字符。

*long vargraphic:long vargraphic 类型的字符串是变长图形字符串,最大长度可达 16,350 个双字节字符。

*双字节字符大对象字符串,dbclob(n):双字节字符大对象是变长双字节字符图形字符串,最长可达 1,073,741,823 个字符。如果只指定了 n,那么 n 就是最大长度。如果指定了 nk,那么最大长度就是 n*1,024(n 的最大值为 1,048,576)。如果指定了 nm,那么最大长度就是 n*1,048,576(n 的最大值为 1,024)。如果指定了 ng,那么最大长度就是 n*1,073,741,824(n 的最大值是 1)。dbclob 用于存储基于大 dbcs(双字节字符集,double-byte character set)字符的数据。二进制字符串是字节序列。二进制字符串包括 blob(n) 类型的变长字符串,它用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。

* 二进制大对象,blob(n):二进制大对象是变长字符串,最长可达 2,147,483,647 字节。如果只指定了 n,那么 n 就是最大长度。如果指定了 nk,那么最大长度就是 n*1,024(n 的最大值为 2,097,152)。如果指定了 nm,那么最大长度就是 n*1,048,576(n 的最大值为 2,048)。如果指定了 ng,那么最大长度就是 n*1,073,741,824(n 的最大值是 2)。

日期时间型数据类型包括 date、time 和 timestamp。日期时间值可在某些算术和字符串操作中使用,而且兼容某些字符串,但它们既不是字符串,也不是数字。

*date:date 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。date 列长 10 个字节。

*time:time 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。如果小时为 24,分钟和秒的值都是 0。time 列长 8 个字节。

*timestamp:timestamp 是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。微秒部分的范围是从 000000 到 999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是 0。timestamp 列长 26 个字节。日期时间值的字符串表示:尽管 date、time 和 timestamp 的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,char 标量函数(请参阅 sql 的“词类(parts of speech)”)可以用于创建日期时间值的字符串表示。

*日期值的字符串表示是一个以数字开始,长度不少于 8 个字符的字符串。日期值的月份和日部分中前面的零可以省略。

*时间值的字符串表示是以数字开头,长度不少于 4 个字符的字符串。时间值的小时部分前面的零可以省略,秒部分可以完全省略。如果秒的值没有指定,那么就认为是 0。

*时间戳记值的字符串表示是以数字开头,长度不少于 16 个字符的字符串。完整的时间戳记字符串表示形式为 yyyy-mm-dd-hh.mm.ss.nnnnnn。时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上是零。

 

你可能感兴趣的:(IBM数据库技术文章)