最全GaussDB数据类型介绍_gausedb(3),2024年最新大数据开发岗面试12家大厂成功跳槽

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

)DISTRIBUTE BY HASH (column1);

–插入数据。
INSERT INTO t_char_type VALUES (‘ok’);

–插入的数据长度超过类型规定的长度报错。
INSERT INTO t_char_type VALUES (‘too long’);
ERROR: value too long for type character varying(5)
CONTEXT: referenced column: column1

–明确类型的长度,超过数据类型长度后会自动截断。
INSERT INTO t_char_type VALUES (‘too long’::varchar(5));

–查询数据。
SELECT column1, char_length(column1) FROM t_char_type;
column1 | char_length
---------±------------
ok | 2
too l | 5
(2 rows)


### 2、布尔类型


1)说明  
 `“真”值的有效文本值`是:  
 TRUE、‘t’、‘true’、‘y’、‘yes’、'1’以及所有非0整数。  
 `“假”值的有效文本值`是:  
 FALSE、‘f’、‘false’、‘n’、‘no’、‘0’、0。  
 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2df485d4902046cf96a43d958b61cd95.png)


2)示例



–创建表。
CREATE TABLE t_bool_type
(
column1 BOOLEAN,
column2 TEXT
)DISTRIBUTE BY HASH(column2);

–插入数据。
INSERT INTO t_bool_type VALUES (TRUE, ‘one’);
INSERT INTO t_bool_type VALUES (FALSE, ‘two’);

–查看数据。
SELECT * FROM t_bool_type;
column1 | column2
---------±--------
t | one
f | two
(2 rows)

SELECT * FROM t_bool_type WHERE column1 = ‘t’;
column1 | column2
---------±--------
t | one
(1 row)


### 3、数值类型


1) 整数类型  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c9a8023b4cf54ad28945933a2c3beabf.png)


* TINYINT、SMALLINT、INTEGER和BIGINT类型存储各种范围的数字,也就是整数。试图存储超出范围以外的数值将会导致错误。
* 常用的类型是INTEGER,因为它提供了在范围、存储空间、性能之间的最佳平衡。一般只有取值范围确定不超过SMALLINT的情况下,才会使用SMALLINT类型。而只有在INTEGER的范围不够的时候才使用BIGINT,因为前者相对快得多。


2)示例



–创建具有TINYINT,INTEGER,BIGINT类型数据的表。
openGauss=# CREATE TABLE t_int_type
(
column1 TINYINT,
column2 TINYINT,
column3 INTEGER,
column4 BIGINT
);

–插入数据。
openGauss=# INSERT INTO int_type_t2 VALUES(100, 10, 1000, 10000);

–查看数据。
openGauss=# SELECT * FROM int_type_t2;
column1 | column2 | column3 | column4
-----------±---------±-----------±------
100 | 10 | 1000 | 10000
(1 row)


### 4、日期/时间类型


1)日期输入说明:日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601格式、SQL-兼容格式、传统POSTGRES格式或者其它的形式。系统支持按照日、月、年的顺序自定义日期输入。如果把DateStyle参数设置为MDY就按照“月-日-年”解析,设置为DMY就按照“日-月-年”解析,设置为YMD就按照“年-月-日”解析。  
 日期的文本输入需要加单引号包围,语法:type [ ( p ) ] ‘value’,可选的精度声明中的p是一个整数,表示在秒域中小数部分的位数。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a10defa8f8b242c2883030ce3da7a2c3.png#pic_center)


2)时间段输入说明:reltime的输入方式可以采用任何合法的时间段文本格式,包括数字形式(含负数和小数)及时间形式,其中时间形式的输入支持SQL标准格式、ISO-8601格式、POSTGRES格式等。另外,文本输入需要加单引号。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/610da37066fa4aebafb3db13a681b258.png)


## 四、数据类型选择建议


选择数据类型,在字段设计时,基于查询效率的考虑,一般遵循以下原则:


* 选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。
* 使用一致的数据类型,当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型。
* 对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免超出最大长度时出现字符截断现象。除非明确知道数据类型为固定长度字符串,否则,不建议使用CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。
* 索引字段的总长度不超过50字节。否则,索引大小会膨胀比较严重,带来较大的存储开销,同时索引性能也会下降。
* 尽量使用执行效率比较高的数据类型,一般来说整型数据运算(包括=、>、<、≧、≦、≠等常规的比较运算,以及group by)的效率比字符串、浮点数要高。比如某客户场景中对列存表进行点查询,filter条件在一个numeric列上,执行时间为10+s;修改numeric为int类型之后,执行时间缩短为1.8s左右。
* 尽量使用短字段的数据类型:长度较短的数据类型不仅可以减小数据文件的大小,提升IO性能;同时也可以减小相关计算时的内存消耗,提升计算性能。比如对于整型数据,如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint。
* 表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态地转化为相同的数据类型进行比较,这种转换会带来一定的性能开销。


![img](https://img-blog.csdnimg.cn/img_convert/14a27f67fc2cd1cfafebfcedb610c8f2.png)
![img](https://img-blog.csdnimg.cn/img_convert/c51f5a1385b97ac130e735984dc8a8a0.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值