官方文档:https://eco.dameng.com/document/dm/zh-cn/sql-dev/dmpl-sql-datatype.html
0、简介 DM 数据类型包括:精确数值数据类型、近似数值数据类型、字符数据类型、多媒体数据类型、一般日期时间数据类型、时间间隔数据类型。 此外,DM SQL 还扩展支持了 %TYPE、%ROWTYPE、记录类型、数组类型、集合类型和类类型,用户还可以定义自己的子类型。
1、数值数据类型
精确数值数据类型包括:NUMERIC、DECIMAL、DEC、NUMBER、INTEGER、INT、BIGINT、TINYINT、BYTE、SMALLINT。
近似数值类型包括:FLOAT、DOUBLE、REAL、DOUBLE PRECISION。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 1. NUMERIC[(精度 [, 标度])]:用于存储零、正负定点数。精度范围1 至38 。精度是一个无符号整数,定义了总的数字数,精度范围是 1 至 38 。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。 例如:NUMERIC(4 ,1 ) 定义了小数点前面 3 位和小数点后面 1 位,共 4 位的数字,范围在 -999.9 到 999.9 。如果其值超过精度,会返回一个出错信息,如果超过标度,则多余的位会被截断。2. NUMBER类型:跟NUMERIC相同3. DECIMAL/DEC类型:跟NUMERIC相似4. INTEGER/INT类型:用于存储有符号整数,精度为10 5. BIGINT类型:用于存储有符号整数,精度为19 ,标度为0 6. TINYINT类型:用于存储有符号整数,精度为3 ,标度为0 。取值范围为:-128 ~+127 。7. BYTE类型:与TINYINT相似,精度为3 ,标度为0 。8. SMALLINT类型:用于存储有符号整数,精度为5 ,标度为0 。9. BINARY类型:指定定长二进制数据。10. REAL类型:带二进制的浮点数。11. FLOAT类型:二进制精度的浮点数,精度最大不超过53 。12. DOUBLE类型:同FLOAT相似,精度最大不超过53 。13. DOUBLE PRECISION类型:该类型指明双精度浮点数,其二进制精度为53 ,十进制精度为15 。
NUMERIC 使用语法:
1 2 NUMERIC [(精度 [, 标度])],DECIMAL 、DEC 类型、NUMBER 类型与 NUMERIC 的语法一致。 所有 NUMERIC 数据类型,如果其值超过精度,会返回一个出错信息,如果超过标度,则多余的位会被截断。
示例
1 2 3 4 5 6 7 8 9 10 CREATE TABLE numer_tab( cust_id INT NOT NULL , atm NUMERIC (8 ,2 ) );INSERT INTO numer_tab values ('10000001' ,'123456.12' ); INSERT INTO numer_tab values ('10000002' ,'-123456.21' ); INSERT INTO numer_tab values ('10000003' ,'1234567.21' );
2、字符数据类型 1 2 1. CHAR /CHARACTER 类型:定长字符串,最大长度由数据库页面大小决定。2. VARCHAR 类型:可变长字符串,最大长度由数据库页面大小决定。
示例
1 2 3 4 5 create table char_tab ( b1 char(10 ), b2 varchar(10 ), primary key(b1 ) )
3、位串数据类型 1 1. BIT 类型:用于存储整数数据 1、0 或 NULL ,只有 0 才转换为假,其他非空、非 0 值都会自动转换为真,可以用来支持 ODBC 和 JDBC 的布尔数据类型。DM 的 BIT 类型与 SQL Server 2000 的 BIT 数据类型相似。
示例
1 2 3 4 5 6 7 8 9 10 CREATE TABLE bit_tab( cust_id INT NOT NULL , cust_name VARCHAR (10 ), sex bit );INSERT INTO bit_tab values ('1' ,'张三' ,1 ); INSERT INTO bit_tab values ('2' ,'李利' ,0 );
4、多媒体数据类型 1 2 3 4 5 1. TEXT/LONGVARCHAR 类型:变长字符串类型,其字符串的长度最大为2 G-1 ,可用于存储长的文本串。2. IMAGE/LONGVARBINARY 类型:可用于存储多媒体信息中的图像类型。3. BLOB 类型:用于指明变长的字符串,长度最大为2 G-1 字节。4. CLOB 类型:用于指明变长的字符串,长度最大为2 G-1 字节。5. BFILE 类型:用于指明存储在操作系统中的二进制文件。
示例
1 2 3 4 5 6 7 8 9 10 CREATE TABLE TEXT_tab( c1 TEXT , c2 BLOB , c3 CLOB , c4 IMAGE );INSERT INTO TEXT_tab values ('dameng' ,'0x123456789' ,'clob' ,'0x987654321' );
5、日期时间数据类型 1 2 3 4 5 6 7 8 9 10 1. DATE类型:包括年、月、日信息,定义了‘-4712 -01 -01 ’和‘9999 -12 -31 ’之间任何一个有效的格里高利日期。2. TIME类型:包括时、分、秒信息。3. TIMESTAMP/DATATIME:包括年、月、日、时、分、秒信息。4. TIME WITH TIME ZONE类型:描述一个带时区的TIME值。5. TIMESTAMP WITH TIME ZONE类型6. TIMESTAMP WITH LOCAL TIME ZONE类型:描述一个本地时区的TIMESTAMP值。7. BOOL/BOOLEAN数据类型:布尔数据类型TRUE 和FALSE 。 TIME 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0 ~6 ,如果未定义,缺省精度为 0 。 TIMESTAMP 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0 ~6 ,如果未定义,缺省精度为 6 。
示例
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE DATE_TAB( cust_id INT NOT NULL , pay_date DATE , pay_time TIME (2 ), pay_timestamp TIMESTAMP );INSERT INTO DATE_TAB values ('111' ,'2021-11-19' ,'23:59:59.99' ,'2021-11-19 23:59:59.999999' ); INSERT INTO DATE_TAB values ('112' ,'2021-11-18' ,'10:05:30.00' ,'2021-11-18 10:05:30.000000' );