DB2中的数据类型
DB2中的数据类型
DB2内置数据类型可以分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、⼆进制字符串型(binary string)或⽇期时间型(datetime)。还有⼀种叫做 DATALINK 的特殊数据类型。DATALINK 值包含了对存储在数据库以外的⽂件的逻辑引⽤。
数值型数据类型包括 SMALLINT、INTEGER、BIGINT、DECIMAL(p,s)、REAL 和 DOUBLE。所有数值都有符号和精度。精度是指除符号以外的⼆进制或⼗进制的位数。如果数字的值⼤于等于零,就认为符号为正。
decimal是整数数据类型*⼩整型,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[K|M|G]):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[K|M|G]):双字节字符⼤对象是变长双字节字符图形字符串,最长可达 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[K|M|G]):⼆进制⼤对象是变长字符串,最长可达 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-
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论