文章目录

  • 一、GaussDB 数据库
  • 二、数据类型概念及特点
  • 三、常用数据类型
    • 1、常用字符串类型介绍
    • 2、布尔类型
    • 3、数值类型
    • 4、日期/时间类型
  • 四、数据类型选择建议

一、GaussDB 数据库

GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字符、日期等。在使用GaussDB时,可能需要进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。

二、数据类型概念及特点

数据类型是一组值的集合以及定义在这个值集上的一组操作。GaussDB数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,GaussDB根据数据类型有相应函数对其内容进行操作,例如GaussDB可对数值型数据进行加、减、乘、除操作等。

数据类型是用来定义数据存储格式和数据范围的规范。每种数据类型都有自己的特点和适用范围,它们在数据库中的作用主要有以下几点:

  • 存储数据:数据库中的每个字段都必须指定数据类型,这样才能确定它们在数据库中的存储格式。不同的数据类型使用不同的存储方式,例如整型会以二进制形式存储,而字符型则以ASCII码或Unicode编码形式存储。
  • 约束数据范围:数据类型可以限制某个字段存储的数据范围,例如整型只能存储整数值,小数型只能存储浮点数等。这样可以确保数据的准确性和完整性,防止非法值进入数据库。
  • 提高查询效率:数据库在查询数据时会根据字段的数据类型进行优化,例如对整型字段的查询会比对字符型字段的查询更快,因为整型字段的数据存储格式更简单,计算也更快。
  • 降低存储空间:不同的数据类型使用不同的存储方式,一些数据类型可以在存储时减少存储空间的占用。例如使用整型可以减少存储空间的占用,因为整型在存储时只需要占用4个字节,而字符型则需要占用更多的存储空间。
  • 提高数据安全性:数据类型可以帮助数据库对数据进行有效的过滤和验证,限制不合法的数据输入,增强数据的安全性和可靠性。

综上所述,数据类型在数据库中扮演着极为重要的角色,它们不仅仅用于存储数据,还可以提高查询效率、降低存储空间、提高数据安全性等。数据库开发人员在设计数据库时必须充分了解各种数据类型的特点和使用场景,合理选用数据类型,才能保证数据库的高效性和稳定性。

三、常用数据类型

1、常用字符串类型介绍

在进行字段设计时,需要根据数据特征选择相应的数据类型。字符串类型在使用时比较容易混淆,下表罗列了GaussDB中常见的字符串类型。
1)常用字符串类型

2)示例

--创建表。
CREATE TABLE t_char_type
(column1 VARCHAR(5)
)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      |           2too l   |           5
(2 rows)

2、布尔类型

1)说明
“真”值的有效文本值是:
TRUE、‘t’、‘true’、‘y’、‘yes’、'1’以及所有非0整数。
“假”值的有效文本值是:
FALSE、‘f’、‘false’、‘n’、‘no’、‘0’、0。
使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。

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       | onef       | two
(2 rows)SELECT * FROM t_bool_type WHERE column1 = 't';column1 | column2
---------+---------t       | one
(1 row)

3、数值类型

1) 整数类型

  • 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是一个整数,表示在秒域中小数部分的位数。

2)时间段输入说明:reltime的输入方式可以采用任何合法的时间段文本格式,包括数字形式(含负数和小数)及时间形式,其中时间形式的输入支持SQL标准格式、ISO-8601格式、POSTGRES格式等。另外,文本输入需要加单引号。

四、数据类型选择建议

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

  • 选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、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。
  • 表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态地转化为相同的数据类型进行比较,这种转换会带来一定的性能开销。

附:GaussDB数据库涉及的数据类型
“数值类型、货币类型、布尔类型、字符类型、二进制类型、日期/时间类型、几何类型、网络地址类型、位串类型、文本搜索类型、UUID类型、JSON/JSONB类型、HLL数据类型、范围类型、对象标识符类型、伪类型、列存表支持的数据类型、账本数据库使用的数据类型”。

详见官方文档:https://support.huaweicloud.com/intl/zh-cn/opengauss/index.html

以上就是本期的内容,欢迎大家测试、交流!

GaussDB数据类型介绍相关推荐

  1. Redis 数据类型介绍

    Redis 数据类型介绍 你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.也就是说,你不必仅仅把字符串当作键所指向的值.下列这些数据类型都可 ...

  2. openresty开发系列13--lua基础语法2常用数据类型介绍

    openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔) 布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假" ...

  3. redis种类型对应java类型_Redis的五种基本数据类型介绍

    Redis作为缓存具有极其丰富的功能,比如计数器.好友关系以及排行榜等等.而Redis之所能够实现如此强大的功能,完全是依赖着它的基本数据结构.今天我们来看看Redis的五种基本的数据结构,分别是字符 ...

  4. mysql数据库邮箱什么类型_MySQL的数据类型介绍

    MySQL的数据类型介绍 发布时间:2020-06-01 20:57:09 来源:亿速云 阅读:154 作者:鸽子 由于Mysql独有的特性和实现细节对性能的影响是很明显的,因为做好Mysql数据库的 ...

  5. Redis五种数据类型介绍

    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...

  6. 【GaussDB】初始GaussDB和GaussDB版本介绍

    文章目录 初始GaussDB GaussDB的版本 GaussDB版本的区别 OLTP和OLAP比较 GaussDB T介绍 GaussDB A 介绍 MPP架构介绍 架构组件介绍 初始GaussDB ...

  7. DB2日期时间型数据类型介绍

    作者:夏果果出处:博客2011-11-18 07:23 DB2日期时间型数据类型是DB2数据库中的数据类型之一,下面就为您分类介绍DB2日期时间型数据类型,希望对您能有所帮助-- DB2日期时间型数据 ...

  8. java 基本数据类型_Java语言的八种基本数据类型介绍

    本文主要向大家介绍了Java语言的八种基本数据类型介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java的基本数据类型有八种 一,四种整数类型(byte.short.int.l ...

  9. MySQL的存储引擎及常用数据类型介绍

    1. MySQL中的数据库分类 2. MySQL中的存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供不同 ...

最新文章

  1. 二级域名session共享php本地,PHP二级域名session共享方案
  2. 51单片机—串口通信
  3. python卸载module_Python学习笔记
  4. 视频编解码器常见问题介绍
  5. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
  6. 信息学奥赛C++语言:有规律的数列
  7. sqlparameter多个赋值一行完成_HashMap源码从面试题说起:请一行一行代码描述hashmap put方法...
  8. android缓存框架SimpleCache
  9. oracle数据库如何写翻页_在oracle数据库中的分页SQL语句怎么写?
  10. 快速判断工作簿中是否存在指定工作表
  11. 运维安全:微软远程桌面修改默认远程端口
  12. win10启用或关闭windows功能空白终极解决办法
  13. [oeasy]python0125_汉字打印机_点阵式打字机_汉字字形码
  14. Windows 10 IDM 下载play.kth.se上面的网课视频
  15. Java、解一元二次方程
  16. nagios安装使用指南
  17. 从FTP模块学习先进的诊断技术(Erlang Trace机制)
  18. pandas 玩转 Excel 操作总结
  19. 线程钩子HookC#实例
  20. 腾讯工蜂(TGit)之代码上传

热门文章

  1. 你的Kubernetes Java应用优雅停机了吗?
  2. qrcodejs2二维码生成js
  3. 网站需要服务器密码登录密码忘记了怎么办,云服务器登录需要密码忘记了怎么办...
  4. 学生个人网页制作html代码(源码)
  5. 今晚直播 |不诉离殇,图像分割打卡营正式毕业啦!
  6. Java pta练习题 第一章
  7. Spring Cloud Gateway 整合 knife4j 聚合接口文档
  8. 空间直角坐标系(XYZ)转经纬度(BLH)
  9. 论文 | 导航 | 2022年亚利桑那州立大学硕士论文《图神经网络与优势Actor-Critic强化学习算法用于多智能体导航》
  10. TCP实现可靠传输的实现