GAUSSDB_200


整数类型
名称	             描述	                                    存储空间	        范围
TINYINT	            微整数,别名为INT1。	                      1字节	             0 ~ 255
SMALLINT	        小范围整数,别名为INT2。	                  2字节	            -32,768 ~ +32,767
INTEGER	            常用的整数,别名为INT4。	                  4字节	            -2,147,483,648 ~ +2,147,483,647
BINARY_INTEGER	    常用的整数INTEGER的别名,为兼容Oracle类型。	   4字节	     -2,147,483,648 ~ +2,147,483,647
BIGINT	            大范围的整数,别名为INT8。	8字节	                    -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
-- 创建具有TINYINT,INTEGER,BIGINT类型数据的表。

任意精度类型
名称	             描述	                                    存储空间	        范围
NUMERIC[(p[,s])],   DECIMAL[(p[,s])]	精度p取值范围为[1,1000],标度s取值范围为[0,p]。说明: p为总位数,s为小数位数。	用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。	未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。
NUMBER[(p[,s])]	    NUMERIC类型的别名,为兼容Oracle数据类型。	用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。	未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。

序列整型
名称	            描述	                                    存储空间	        范围
SMALLSERIAL	        二字节序列整型。	                         2字节	            1 ~ 32,767
SERIAL	            四字节序列整型。	                         4字节	            1 ~ 2,147,483,647
BIGSERIAL	        八字节序列整型。	                         8字节	            1 ~ 9,223,372,036,854,775,807

浮点类型
名称	            描述	                                    存储空间	        范围
REAL,FLOAT4	        单精度浮点数,不精准。	                    4字节	6位十进制数字精度。
DOUBLE PRECISION,   FLOAT8	双精度浮点数,不精准。	            8字节	1E-307~1E+308,15位十进制数字精度。
FLOAT[§]	        浮点数,不精准。精度p取值范围为[1,53]。说明: p为精度,表示总位数。	4字节或8字节	根据精度p不同选择REAL或DOUBLE PRECISION作为内部表示。如不指定精度,内部用DOUBLE PRECISION表示。
BINARY_DOUBLE	    是DOUBLE PRECISION的别名,为兼容Oracle类型。	8字节	1E-307~1E+308,15位十进制数字精度。
DEC[(p[,s])]	    精度p取值范围为[1,1000],标度s取值范围为[0,p]。说明: p为总位数,s为小数位位数。	用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。	未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。
INTEGER[(p[,s])]	精度p取值范围为[1,1000],标度s取值范围为[0,p]。	用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。	未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。
货币类型
名字	            描述	                                  存储空间                      范围
money	           	货币金额	                                                            -92233720368547758.08 到 +92233720368547758.07
布尔类型
名称	            描述	                                    存储空间	                取值
BOOLEAN	            布尔类型	                                1字节。	                    true:真false:假null:未知(unknown)

字符类型
常规字符类型

名称	                                    描述	                                    存储空间
CHAR(n),CHARACTER(n),NCHAR(n)	        定长字符串,不足补空格。n是指字节长度,如不带精度n,默认精度为1。	最大为10MB。
VARCHAR(n),CHARACTER VARYING(n)	        变长字符串。n是指字节长度。	最大为10MB。
VARCHAR2(n)	                            变长字符串。是VARCHAR(n)类型的别名,为兼容Oracle类型。n是指字节长度。	最大为10MB。
NVARCHAR2(n)	                        变长字符串。n是指字符长度。	最大为10MB。
CLOB	                                文本大对象。是TEXT类型的别名,为兼容Oracle类型。	最大为1G-8023B(即1073733621B)。
TEXT	                                变长字符串。	最大为1G-8023B(即1073733621B)。

特殊字符类型
名称	                                描述	                                                        存储空间
name	                                用于对象名的内部类型。	64字节。
“char”	                                单字节内部类型。	1字节。
name类型只用在内部系统表中,作为存储标识符,不建议普通用户使用,该类型长度当前定为64字节(63可用字符加结束符)
类型"char"只用了一个字节的存储空间,他在系统内部主要用于系统表,主要作为简单化的枚举类型使用。

日期时间类型
名称	                                描述	                                                        存储空间
DATE	                                日期和时间。	4字节(实际存储空间大小为8字节)
TIME [§] [WITHOUT TIME ZONE]	        只用于一日内时间,p表示小数点后的精度,取值范围为0~6。	8字节
TIME [§] [WITH TIME ZONE]	            只用于一日内时间,带时区,p表示小数点后的精度,取值范围为0~6。	12字节
TIMESTAMP[§] [WITHOUT TIME ZONE]	    日期和时间,p表示小数点后的精度,取值范围为0~6。	8字节
TIMESTAMP[§][WITH TIME ZONE]	        日期和时间,带时区,TIMESTAMP的别名为TIMESTAMPTZ,p表示小数点后的精度,取值范围为0~6。	8字节
SMALLDATETIME	                        日期和时间,不带时区,精确到分钟,秒位大于等于30秒进一位。	8字节
INTERVAL DAY (l) TO SECOND §	        时间间隔,X天X小时X分X秒,l:天数的精度,取值范围为06,为适配Oracle语法,未实现具体功能,p:秒数的精度,取值范围为06,小数末尾的零不显示。	16字节
INTERVAL [FIELDS] [ § ]	时间间隔,fields:可以是YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,DAY TO HOUR,DAY TO MINUTE,DAY TO SECOND,HOUR TO MINUTE,HOUR TO SECOND,MINUTE TO SECOND,p:秒数的精度,取值范围为0~6,且fields为SECOND,DAY TO SECOND,HOUR TO SECOND或MINUTE TO SECOND时,参数p才有效,小数末尾的零不显示。	12字节
reltime	                                相对时间间隔,格式为:X years X mons X days XX:XX:XX,采用儒略历计时,规定一年为365.25天,一个月为30天,计算输入值对应的相对时间间隔,输出采用POSTGRES格式。

-- 创建具有TINYINT,INTEGER,BIGINT类型数据的表。
CREATE TABLE myschema.int_type_t2 
(
    a TINYINT, 
    b TINYINT,
    c INTEGER,
    d BIGINT
);
-- 创建表。
CREATE TABLE myschema.numeric_type_t1 
(
    NT_COL1 NUMERIC(10,4)
);

-- 插入数据。
INSERT INTO myschema.numeric_type_t1 VALUES(123456.12354);

-- 查询表中的数据。
SELECT * FROM myschema.numeric_type_t1;
   nt_col1   
-------------
 123456.1235
(1 row)
-- 因为小数位精度限制了4位,所以只结果为123456.1235
-- 删除表。
DROP TABLE myschema.numeric_type_t1;

-- 创建表。
CREATE TABLE myschema.smallserial_type_tab(a SMALLSERIAL);
-- 插入数据。
INSERT INTO myschema.smallserial_type_tab VALUES(default);
-- 再次插入数据。
INSERT INTO myschema.smallserial_type_tab VALUES(default);
-- 查看数据。
SELECT * FROM myschema.smallserial_type_tab;  
 a 
---
 1
 2
(2 rows)

-- 创建表。
CREATE TABLE myschema.serial_type_tab(b SERIAL);
-- 插入数据。
INSERT INTO myschema.serial_type_tab VALUES(default);
-- 再次插入数据。
INSERT INTO myschema.serial_type_tab VALUES(default);
-- 查看数据。
SELECT * FROM myschema.serial_type_tab; 
 b 
---
 1
 2
(2 rows)

-- 创建表。
CREATE TABLE myschema.bigserial_type_tab(c BIGSERIAL);
-- 插入数据。
INSERT INTO myschema.bigserial_type_tab VALUES(default);
-- 插入数据。
INSERT INTO myschema.bigserial_type_tab VALUES(default);
-- 查看数据。
SELECT * FROM myschema.bigserial_type_tab;
 c 
---
 1
 2
(2 rows)

-- 删除表。
DROP TABLE myschema.smallserial_type_tab;
DROP TABLE myschema.serial_type_tab;
DROP TABLE myschema.bigserial_type_tab;

-- 创建表。
CREATE TABLE myschema.float_type_t2 
(
    FT_COL1 INTEGER,
    FT_COL2 FLOAT4,
    FT_COL3 FLOAT8,
    FT_COL4 FLOAT(16),
    FT_COL5 BINARY_DOUBLE,
    FT_COL6 DECIMAL(10,4),
    FT_COL7 INTEGER(6,3)
) DISTRIBUTE BY HASH ( ft_col1);

-- 插入数据。
INSERT INTO myschema.float_type_t2 VALUES(10,10.365456,123456.1234,10.3214, 321.321, 123.123654, 123.123654);
INSERT INTO myschema.float_type_t2 VALUES(10,10.365456,123456.1234,10.12654, 321.321, 123.123654, 123.123654);

-- 查看数据。
SELECT * FROM myschema.float_type_t2 ;
 ft_col1 | ft_col2 |   ft_col3   | ft_col4 | ft_col5 | ft_col6  | ft_col7 
---------+---------+-------------+---------+---------+----------+---------
      10 | 10.3655 | 123456.1234 | 10.3214 | 321.321 | 123.1237 | 123.124
(1 row)

-- 删除表。
DROP TABLE myschema.float_type_t2;

-- 创建表。
CREATE TABLE myschema.bool_type_t1  
(
    BT_COL1 BOOLEAN,
    BT_COL2 TEXT
)  DISTRIBUTE BY HASH(BT_COL2);

-- 插入数据。
INSERT INTO myschema.bool_type_t1 VALUES (TRUE, 'sic est');

INSERT INTO myschema.bool_type_t1 VALUES (FALSE, 'non est');

-- 查看数据。
SELECT * FROM myschema.bool_type_t1;
 bt_col1 | bt_col2 
---------+---------
 t       | sic est
 f       | non est
(2 rows)

SELECT * FROM myschema.bool_type_t1 WHERE bt_col1 = 't';
 bt_col1 | bt_col2 
---------+---------
 t       | sic est
(1 row)

-- 删除表。
DROP TABLE myschema.bool_type_t1;

-- 创建表。
CREATE TABLE myschema.char_type_t2  
(
    CT_COL1 VARCHAR(5)
)  DISTRIBUTE BY HASH (CT_COL1);

-- 插入数据。
INSERT INTO myschema.char_type_t2 VALUES ('ok');
INSERT INTO myschema.char_type_t2 VALUES ('good');

-- 插入的数据长度超过类型规定的长度报错。
INSERT INTO myschema.char_type_t2 VALUES ('too long');
-- ERROR:  value too long for type character varying(4)
-- CONTEXT:  referenced column: ct_col1

-- 明确类型的长度,超过数据类型长度后会自动截断。
INSERT INTO myschema.char_type_t2 VALUES ('too long'::varchar(5));

-- 查询数据。
SELECT ct_col1, char_length(ct_col1) FROM myschema.char_type_t2;
 ct_col1 | char_length 
---------+-------------
 ok      |           2
 good    |           5
 too l   |           5
(3 rows)
-- too long已经被截断为5位(too l)

-- 删除数据。
DROP TABLE myschema.char_type_t2;
-- 创建表。
CREATE TABLE myschema.date_type_tab(coll date);

-- 插入数据。
INSERT INTO myschema.date_type_tab VALUES (date '01-01-2021');
INSERT INTO myschema.date_type_tab VALUES (date '2021-01-01');
-- 查看数据。
SELECT * FROM myschema.date_type_tab;
        coll         
---------------------
 2021-01-01 00:00:00
 2021-01-01 00:00:00
(2 rows)

-- 删除表。
DROP TABLE myschema.date_type_tab;

-- 创建表。
CREATE TABLE myschema.time_type_tab (da time without time zone ,dai time with time zone,dfgh timestamp without time zone,dfga timestamp with time zone, vbg smalldatetime);
/*
Column |            Type             | Modifiers | Storage | Stats target | Description 
--------+-----------------------------+-----------+---------+--------------+-------------
 da     | time without time zone      |           | plain   |              | 
 dai    | time with time zone         |           | plain   |              | 
 dfgh   | timestamp without time zone |           | plain   |              | 
 dfga   | timestamp with time zone    |           | plain   |              | 
 vbg    | smalldatetime               |           | plain   |              | 
Has OIDs: no
Distribute By: HASH(da)
Location Nodes: ALL DATANODES
Options: orientation=row, compression=no
*/

-- 插入数据。
INSERT INTO myschema.time_type_tab VALUES ('21:21:21','21:21:21 gmt','2010-12-12','2013-12-11 gmt','2003-04-12 04:05:06');

-- 查看数据。
SELECT * FROM myschema.time_type_tab;
/*
    da    |     dai     |        dfgh         |          dfga          |         vbg         
----------+-------------+---------------------+------------------------+---------------------
 21:21:21 | 21:21:21-08 | 2010-12-12 00:00:00 | 2013-12-11 16:00:00+08 | 2003-04-12 04:05:00
(1 row)
*/

-- 删除表。
DROP TABLE myschema.time_type_tab;

-- 创建表。
-- select interval '5' day + interval '10' second;结果就为5天10秒,在Oracle中较为常用。
-- 如下创建了一个interval day to second类型 天的位数为3 秒的位数为4
CREATE TABLE myschema.day_type_tab (a int,b INTERVAL DAY(3) TO SECOND (4)); 

-- 插入数据。
INSERT INTO myschema.day_type_tab VALUES (1, INTERVAL '3' DAY);
-- 插入333天2小时10分10秒
INSERT INTO myschema.day_type_tab VALUES (2, INTERVAL '333 2:10:10' DAY to second);

-- 查看数据。
SELECT * FROM myschema.day_type_tab;
/*
 a |         b         
---+-------------------
 1 | 3 days
 2 | 333 days 02:10:10
(2 rows)
*/

-- 删除表。
DROP TABLE myschema.day_type_tab;

-- 创建表。
CREATE TABLE myschema.year_type_tab(a int, b interval year (6));

-- 插入数据。
INSERT INTO myschema.year_type_tab VALUES(1,interval '2' year);

-- 查看数据。
SELECT * FROM myschema.year_type_tab;
 a |    b    
---+---------
 1 | 2 years
(1 row)

-- 删除表。
DROP TABLE myschema.year_type_tab;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值