VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

数值类型

该文档只介绍Vastbase兼容MySQL的数值类型,原Vastbase的数值类型未做删除和修改,详见数值类型

整数类型

类型 描述 存储空间 取值范围
INTEGER 常用的整数,别名为INT4。 4字节 -2,147,483,648 ~ +2,147,483,647
SMALLINT 小范围整数,别名为INT2。 2字节 -32,768 ~ +32,767
TINYINT 微整数,别名为INT1。 1字节 -128 ~ +127
BIGINT 大范围的整数,别名为INT8。 8字节 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807
MEDIUMINT INT4的别名, 4字节 -2,147,483,648 ~ +2,147,483,647
TINYINT UNSIGNED 无符号微整数,别名为UINT1。 1字节 0 ~ 255
SMALLINT UNSIGNED 无符号小范围整数,别名为UINT2。 2字节 0 ~ +65,535
INTEGER UNSIGNED 无符号整数,别名为UINT4。 4字节 0 ~ +4,294,967,295
MEDIUMINT UNSIGNED UINT4的别名, 4字节 0 ~ +4,294,967,295
BIGINT UNSIGNED 大范围的无符号整数,别名为UINT8。 8字节 0 ~ +18,446,744,073,709,551,615
为了确保与MySQL的语法兼容,Vastbase G100支持整数类型后跟随(n)的语法格式,即:INTEGER(n)、SMALLINT(n)、TINYINT(n)……,但功能上(n)并不生效。 **示例** 1、创建具有TINYINT, SMALLINT, MEDIUMINT, BIGINT类型数据的表。 ```sql CREATE TABLE int_type_t1 ( IT_COL1 TINYINT, IT_COL2 SMALLINT, IT_COL3 MEDIUMINT, IT_COL4 BIGINT, IT_COL5 INTEGER ); ``` 2、查看表结构。 ```sql \d int_type_t1 ``` 返回结果为: ```sql Table "public.int_type_t1" Column | Type | Modifiers | Attalias ---------+----------+-----------+---------- it_col1 | tinyint | | IT_COL1 it_col2 | smallint | | IT_COL2 it_col3 | integer | | IT_COL3 it_col4 | bigint | | IT_COL4 it_col5 | integer | | IT_COL5 ``` 3、创建带zerofill属性字段的表。zerofill属性当前仅为语法兼容,实际功能与UNSIGNED属性一致,详见“COLUMN定义支持ZEROFILL/UNSIGNED属性”。 ```sql CREATE TABLE int_type_t2 ( IT_COL1 TINYINT(10) zerofill, IT_COL2 SMALLINT(20) unsigned zerofill, IT_COL3 MEDIUMINT(30) unsigned, IT_COL4 BIGINT(40) zerofill, IT_COL5 INTEGER(50) zerofill ); ``` 4、查看表结构。 ```sql \d int_type_t2 ``` 返回结果为: ```sql Table "public.int_type_t2" Column | Type | Modifiers | Attalias ---------+-------+-----------+---------- it_col1 | uint1 | | IT_COL1 it_col2 | uint2 | | IT_COL2 it_col3 | uint4 | | IT_COL3 it_col4 | uint8 | | IT_COL4 it_col5 | uint4 | | IT_COL5 ``` 5、利用cast unsigned将表达式转换为uint8类型。 ```sql select cast(1 - 2 as unsigned); ``` 返回结果为: ```sql uint8 ---------------------- 18446744073709551615 (1 row) ``` 6、利用cast signed将表达式转换为int8类型。 ```sql select cast(1 - 2 as signed); ``` 返回结果为: ```sql int8 ------ -1 (1 row) ``` 7、数据清理 ```sql DROP TABLE int_type_t1, int_type_t2; ``` ## 任意精度型
名称 描述 存储空间 范围
NUMERIC[(p[,s])]
DECIMAL[(p[,s])]
FIXED[(p[,s])]
精度p取值范围为[1,1000],标度s取值范围为[0,p]。说明:p为总位数,s为小数位数。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 未指定精度的情况下,等价于(10,0),即小数点前最大10位,小数点后0位。
NUMBER[(p[,s])] NUMERIC类型的别名。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。

示例

1、创建具有FIXED(p,s), FIXED, decimal, number类型数据的表。

CREATE TABLE dec_type_t1
           (
            DEC_COL1 FIXED,
            DEC_COL2 FIXED(20,5),
            DEC_COL3 DECIMAL,
            DEC_COL4 NUMBER
           );

2、查看表结构。

\d dec_type_t1

返回结果为:

           Table "public.dec_type_t1"
  Column  |     Type      | Modifiers | Attalias
----------+---------------+-----------+----------
 dec_col1 | numeric(10,0) |           | DEC_COL1
 dec_col2 | numeric(20,5) |           | DEC_COL2
 dec_col3 | numeric(10,0) |           | DEC_COL3
 dec_col4 | numeric       |           | DEC_COL4

3、数据清理

DROP TABLE dec_type_t1;

浮点类型

名称 描述 存储空间 范围
FLOAT[(p)]
FLOAT4[(p)]
浮点数,不精准。精度p取值范围为[1,53]。 4字节或8字节 当精度p在 [1,24]之间时,选项REAL作为内部表示,当精度p在 [25,53]之间时,选项DOUBLE PRECISION作为内部表示。如不指定精度,内部用REAL表示。
DOUBLE PRECISION
FLOAT8,DOUBLE
双精度浮点数,不精准。 8字节 -1.79E+308~1.79E+308,15位十进制数字精度。
FLOAT4(p,s) 精度p取值范围为[1,1000],标度s取值范围为[0,p]。
说明:p为总位数,s为小数位位数,等价于dec(p,s)。
用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 -
FLOAT(p,s)
DOUBLE(p,s)
REAL(p,s)
DOUBLE PRECISION(p,s)
精度p取值范围为[1,1000],标度s取值范围为[0,p]。
说明:p为总位数,s为小数位位数,其中float(p,s),real(p,s),double precision(p,s)大致等价于dec(p,s),但p和s都必须为整数,而double(p,s)完全等价于dec(p,s)。舍入方式为四舍五入。
用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 -

示例

1、创建具有float4(p,s), double, float4(n), float(n)类型数据的表。

CREATE TABLE float_type_t1
           (
            F_COL1 FLOAT4(10,4),
            F_COL2 DOUBLE,
            F_COL3 float4(10),
            F_COL4 float4(30),
            F_COL5 float(10),
            F_COL6 float(30)
           );

2、查看表结构。

\d float_type_t1

返回结果为:

           Table "public.float_type_t1"
 Column |       Type       | Modifiers | Attalias
--------+------------------+-----------+----------
 f_col1 | numeric(10,4)    |           | F_COL1
 f_col2 | double precision |           | F_COL2
 f_col3 | real             |           | F_COL3
 f_col4 | double precision |           | F_COL4
 f_col5 | real             |           | F_COL5
 f_col6 | double precision |           | F_COL6

3、创建具有float(p,s), double(p,s), real(p,s), double precision(p,s)类型数据的表。

CREATE TABLE test_float_double_real_double_precision
           (
            a FLOAT(20,2),
            b DOUBLE(20,2),
            c REAL(20,2),
            d DOUBLE PRECISION(20,2)
           );

4、查看表结构。

\d test_float_double_real_double_precision        

返回结果为:

Table "public.test_float_double_real_double_precision"
 Column |     Type      | Modifiers | Attalias
--------+---------------+-----------+----------
 a      | numeric(20,2) |           | a
 b      | numeric(20,2) |           | b
 c      | numeric(20,2) |           | c
 d      | numeric(20,2) |           | d

5、数据清理。

DROP TABLE float_type_t1;
DROP TABLE test_float_double_real_double_precision;