DM8 数据类型

DM SQL数据类型:

精确数值、近似数值、字符、多媒体、一般日期时间、时间间隔。

DMSQL程序数据类型:

除DM SQL数据类型外,还扩展支持%TYPE、%ROWTYPE、记录类型、数组类型、集合类型和类类型,还可用户自定义子类型。

数值数据类型

1、NUMRIC

  1. NUMRIC[(精度[,标度])]

用于存储0、正负定点数。精度,无符号整数,定义总的数字个数,精度范围1-38,标度定义小数点右边的数字位数,若省略精度,标度默认16,若省略标度,标度默认为0。不指定精度和标度是,默认精度38。

超过标度,多余位截断。超过精度,返回出错信息。

2、NUMBER

NUMBER[(精度[,标度])] 功能同NUMERIC

3、DECIMAL/DEC类型

DECIMAL[(精度[,标度])] / DEC [(精度[,标度])]。功能与NUMERIC相似

4、BIT类型

用于存储整数数据1、0或null,可以用来支持 odbc 和 jdbc 的布尔数据类型

5、INTEGER/INT类型

用于存储有符号整数,精度为10,标度为0。取值范围-2^31~+2^31-1

6、PLS_INTEGER类型

与integer相同

7、BIGINT

用于存储有符号整数,精度19,标度0。取值范围-2^63~+2^63-1

8、TINYINT

用于存储符号整数,精度为3,标度为0.取值范围-138~+127

9、BYTE

与TINYINT相似,精度3,标度0

10、SMALLINT

用于存储有符号整数,精度5,标度0

11、BINARY

BINARY[(长度)],指定定长二进制数据。缺省长度为1个字节,最大长度有数据库页面大小决定

12、VARBINARY

VARBINAR[(长度)]变长二进制数据,用法类似BINARY数据类型,可指定一个正整数作为数据长度,缺省8188个字节,最大有数据库页面大小决定

13、REAL

带二进制的浮点数,系统指定二进制精度为24,十进制精度为7。取值范围:-3.4E+38 ~3.4E+38

14、FLOAT

FLOAT[(精度)],带二进制精度的浮点数,二进制最大精度53,十进制最大精度15。范围-1.7E+308~1.7E+308

15、DOUBLE

DOUBLE[(精度)]同FLOAT,精度最大不超过53

16、DOUBLE PRECISION

双精度浮点数,二进制精度53,十进制精度15-1.7E+308~1.7E+308

17、数值类型举例测试:

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_1

(C1 NUMBER(3,1),

C2 BIT,

C3 INT,

C4 BYTE,

C5 VARBINARY(2),

C6 REAL,

C7 FLOAT(3));

DM8 数据类型

  • number类型

number(3,1)表示允许总位数3,小数位1,则整数部分2位,错过标度,使用四舍五入

--C1 number栏位插入数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C1) VALUES(314);

INSERT INTO SCHEMA1.TAB_TEST142_1(C1) VALUES(31.4);

INSERT INTO SCHEMA1.TAB_TEST142_1(C1) VALUES(3.14);

--插入的数据超过精度,插入失败

DM8 数据类型

DM8 数据类型

 

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

--C1插入小数位大于5的数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C1) VALUES(31.67);

DM8 数据类型

根据结果可看出超出标度的小数使用四舍五入的方式存入数据

--插入31成功,显示为31.0

INSERT INTO SCHEMA1.TAB_TEST142_1(C1) VALUES(31);

DM8 数据类型

  • BIT

对于非0非null的数据存储都为1

--C2插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C2) VALUES(1);

INSERT INTO SCHEMA1.TAB_TEST142_1(C2) VALUES(0);

INSERT INTO SCHEMA1.TAB_TEST142_1(C2) VALUES(3);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

可看到插入的3查询出来显示为1,可知插入非0非null的数据均显示为1

DM8 数据类型

  • INT

插入的数据根据小数点后第一位四舍五入为整数

--C3插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C3) VALUES(3);

INSERT INTO SCHEMA1.TAB_TEST142_1(C3) VALUES(3.1);

INSERT INTO SCHEMA1.TAB_TEST142_1(C3) VALUES(3.5);

INSERT INTO SCHEMA1.TAB_TEST142_1(C3) VALUES(-3);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

--C3插入3.46

INSERT INTO SCHEMA1.TAB_TEST142_1(C3) VALUES(3.46);

可看出根据小数点后第一位四舍五入为整数

DM8 数据类型

  •  BYTE

精度为3的整数

插入的数据根据小数点后第一位四舍五入为整数

--C4插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C4) VALUES(3);

INSERT INTO SCHEMA1.TAB_TEST142_1(C4) VALUES(3.1);

INSERT INTO SCHEMA1.TAB_TEST142_1(C4) VALUES(3.46);

INSERT INTO SCHEMA1.TAB_TEST142_1(C4) VALUES(-3.6);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

--C4插入4位的数,会插入失败

INSERT INTO SCHEMA1.TAB_TEST142_1(C4) VALUES(314.1);

DM8 数据类型

  • VARBINARY

变长二进制数据,可插入十进制数据,数据库以十六进制形式存储

--C5插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C5) VALUES(0x4058);

INSERT INTO SCHEMA1.TAB_TEST142_1(C5) VALUES(346);

INSERT INTO SCHEMA1.TAB_TEST142_1(C5) VALUES(34.6);

DM8 数据类型

--插入超过定义长度的数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C5) VALUES(0x2A3B4058);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

  • REAL

数据以十进制浮点数存储

--C6插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C6) VALUES(0x4058);

INSERT INTO SCHEMA1.TAB_TEST142_1(C6) VALUES(346);

INSERT INTO SCHEMA1.TAB_TEST142_1(C6) VALUES(34.6);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

  • FLOAT

--C7插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_1(C7) VALUES(314);

INSERT INTO SCHEMA1.TAB_TEST142_1(C7) VALUES(314.1);

INSERT INTO SCHEMA1.TAB_TEST142_1(C7) VALUES(3141.46);

INSERT INTO SCHEMA1.TAB_TEST142_1(C7) VALUES(0xFFFFFFFFFFF);

DM8 数据类型

--查询插入成功的数据

SELECT * FROM SCHEMA1.TAB_TEST142_1;

DM8 数据类型

字符数据类型

1、CHAR[(长度)]/CHARACTER[(长度)]

定长字符串,最大长度由数据库页面大小决定,长度不足时,自动填充空格

2、VARCHAR[(长度)]

可变长字符串,最大长度有数据库页面大小决定

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_2

(C1 char(3),

C2 varchar(3));

--插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_2(C1,C2) VALUES('a','A');

INSERT INTO SCHEMA1.TAB_TEST142_2(C1,C2) VALUES('aa','AA');

INSERT INTO SCHEMA1.TAB_TEST142_2(C1,C2) VALUES('aaa','AAA');

--超出定义长度,插入失败

INSERT INTO SCHEMA1.TAB_TEST142_2(C1,C2) VALUES('aaaa','AAAA');

DM8 数据类型

--查询插入成功的数据

SELECT C1,BIT_LENGTH(C1),C2,BIT_LENGTH(C2)  FROM SCHEMA1.TAB_TEST142_2;

根据结果可知,定长字符串在插入长度小于定义长度时,使用空格填充,可变字符串是设定一个上限,实际使用多少分配多少

DM8 数据类型

多媒体数据类型

1、TEXT/LONGVARCHAR

变长字符串类型,最大长度为2G-1,用于存储唱的文本串

2、IMAGE/LONGVARBINARY

可用于存储多媒体信息中的图像类型。图像由不定长的象素点阵组成,长度最大为 2G-1 字节。该类型除了存储图像数据之外,还可用于存储任何其它二进制数据

3、BLOB

指明边变长的二进制大对象,长度最大为2G-1字节

4、CLOB

用于指明变长的字符串,最大长度2G-1字节

5、BFILE

指明存储在操作系统中的二进制文件,仅能进行只读访问

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_3

(C1 TEXT,

C2 BLOB,

C3 CLOB);

DM8 数据类型

--查询插入成功的数据

SELECTFROM SCHEMA1.TAB_TEST142_3;

无论字段值的长短,查询结果都不会直接显示,管理工具可双击查看

DM8 数据类型

日期时间数据类型

1、DATE

包括年月日信息,定义了-4721-01-01,和9999-12-31之间任何一个有效的格里高利日期

2、TIME[(小数秒精度)]

time包括时、分、秒信息,定义了一个在’00:00:00.000000’和’23:59:59.999999’之间的有效时间,其中小数秒精度规定了秒字段中小数点后面的位数,取值范围0-6,缺省为0.

3、TIMESTAMP[(小数秒精度)]/DATETIME[(小数秒精度)]

包括年、月、日、时、分、秒信息,定义了一个在'- 4712-01-01 00:00:00.000000'和'9999-12-31 23:59:59.999999'之间的有效 格里高利日期时间。小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如 果未定义,缺省精度为 6

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_4

(C1 DATE,

C2 TIME,

C3 TIMESTAMP);

DM8 数据类型

--插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_4(C1,C2,C3) VALUES(CURRENT_DATE(),LOCALTIME(),SYSDATE());

INSERT INTO SCHEMA1.TAB_TEST142_4(C1,C2,C3) VALUES('2021-08-23','14:00:00','2021-08-23 14:00:00');

DM8 数据类型

--查询插入成功的数据

SELECTFROM SCHEMA1.TAB_TEST142_4;

DM8 数据类型

时区数据类型

1、TIME WITH TIME ZONE 类型

TIME[(小数秒精度)]WITH TIME ZONE

带时区的time值,时区部分的实质是INTERVAL HOUR TO MINUTE, 取值范围:-12:59 与+14:00 之间

2、TIMESTAMP WITH TIME ZONE 类型

TIMESTAMP[(小数秒精度)]WITH TIME ZONE

描述一个带时区的 TIMESTAMP 值,其定义是在 TIMESTAMP 类型的后面加上时区信 息。时区部分的实质是 INTERVAL HOUR TO MINUTE 类型

3、TIMESTAMP WITH LOCAL TIME ZONE 类型

TIMESTAMP[(小数秒精度)]WITH LOCAL TIME ZONE

描述一个本地时区的 TIMESTAMP 值,能够将标准时区类型 TIMESTAMP WITH TIME ZONE 类型转化为本地时区类型,如果插入的值没有指定时区,则默认为本地时区

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_5

(C1 TIME WITH TIME ZONE,

C2 TIMESTAMP WITH TIME ZONE,

C3 TIMESTAMP WITH LOCAL TIME ZONE);

DM8 数据类型

--插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_5(C1,C2,C3) VALUES(CURRENT_TIME(),CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());

INSERT INTO SCHEMA1.TAB_TEST142_4(C1,C2,C3) VALUES('2021-08-23','2021-08-23 14:00:00','2021-08-23 14:00:00');

DM8 数据类型

--查询插入成功的数据

SELECTFROM SCHEMA1.TAB_TEST142_5;

DM8 数据类型

时间间隔数据类型

P 为时间间隔的首项字段精度 ,Q 为时间间隔秒精度

INTERVAL YEAR(P) 年间隔,即两个日期之间的年数字

INTERVAL MONTH(P) 月间隔,即两个日期之间的月数字

INTERVAL DAY(P) 日间隔,即为两个日期/时间之间的日数字

INTERVA L HOUR(P) 时间隔,即为两个日期/时间之间的时数字

INTERVAL MINUTE(P) 分间隔,即为两个日期/时间之间的分数字

INTERVAL SECOND(P,Q) 秒间隔,即为两个日期/时间之间的秒数字

INTERVAL YEAR(P) TO MONTH年月间隔,即两个日期之间的年月数字

INTERVAL DAY(P) TO HOUR日时间隔,即为两个日期/时间之间的日时数字

INTERVAL DAY(P) TO MINUTE日时分间隔,即为两个日期/时间之间的日时分数字

INTERVAL DAY(P)TO SECOND(Q)日时分秒间隔,即为两个日期/时间之间的日时分秒数字

INTERVALL HOUR(P) TO MINUTE时分间隔,即为两个日期/时间之间的时分数字

INTERVAL HOUR(P) TO SECOND(Q)时分秒间隔,即为两个日期/时间之间的时分秒数字

INTERVAL MINUTE(P) TO SECOND(Q)分秒间隔,即为两个日期/时间之间的分秒间隔

--创建一个测试表

CREATE TABLE SCHEMA1.TAB_TEST142_6

(C1 INTERVAL YEAR(1),

C2 INTERVAL MONTH(2),

C3 INTERVAL DAY(3),

C4 INTERVAL SECOND(4,4));

DM8 数据类型

--插入几笔数据

INSERT INTO SCHEMA1.TAB_TEST142_6(C1,C2,C3,C4) VALUES(1,-2,76,1000);

INSERT INTO SCHEMA1.TAB_TEST142_6(C1,C2,C3,C4) VALUES(-1,3,-55,-100);

DM8 数据类型

--查询插入成功的数据

SELECTFROM SCHEMA1.TAB_TEST142_6;

DM8 数据类型

 

上一篇:QA32增强


下一篇:操作样式