【 ClickHouse】 ClickHouse数据类型(整型、浮点型、布尔型、Decimal型、字符串、数组、时间类型)(二)

ClickHouse数据类型

整型

固定长度的整型,包括有符号整型或无符号整型。

1)整型范围:

sql 复制代码
Int8 - [-128 : 127]
Int16 - [-32768 : 32767]
Int32 - [-2147483648 : 2147483647]
Int64 - [-9223372036854775808 : 9223372036854775807]

2)无符号整型范围:

sql 复制代码
UInt8 - [0 : 255]
UInt16 - [0 : 65535]
UInt32 - [0 : 4294967295]
UInt64 - [0 : 18446744073709551615]

使用场景:个数、数量、也可以存储型id。
浮点型

Float32 - float Float64 -- double

建议尽可能以整数形式存储数据。例如,将固定精度的数字转换为整数值,如时间用毫秒为单位表示,因为浮点型进行计算时可能引起四舍五入的误差。

使用场景:一般数据值比较小,不涉及大量的统计计算,精度要求不高的时候。比如保存商品的重量。
布尔型

没有单独的类型来存储布尔值。可以使用UInt8类型,取值限制为0或1。
Decimal型

有符号的浮点数,可在加、减和乘法运算过程中保持精度。对于除法,最低有效数字会被丢弃(不舍入)。

有三种声明:

sql 复制代码
1)Decimal32(s),相当于 Decimal(9-s,s),有效位数为1~9。
2)Decimal64(s),相当于 Decimal(18-s,s),有效位数为1~18。
3)Decimal128(s),相当于 Decimal(38-s,s),有效位数为1~38。

使用场景:一般金额字段、汇率、利率等字段为了保证小数点精度,都使用Decimal进行存储。
字符串

1)String:字符串可以任意长度的。它可以包含任意的字节集,包含空字节。

2)FixedString(N):固定长度N的字符串,N必须是严格的正自然数。当服务端读取长度小于N的字符串时候,通过在字符串末尾添加空字节来达到N字节长度。当服务端读取长度大于N的字符串时候,将返回错误消息。与String相比,极少会使用FixedString,因为使用起来不是很方便。

使用场景:名称、文字描述、字符型编码。固定长度的可以保存一些定长的内容,比如一些编码,性别等但是考虑到一定的变化风险,带来收益不够明显,所以定长字符串使用意义有限。
时间类型

目前ClickHouse有三种时间类型:

sql 复制代码
1)Date接受年-月-日的字符串比如'2019-12-16'。
2)Datetime接受年-月-日 时:分:秒的字符串比如'2019-12-16 20:50:10'。
3)Datetime64接受年-月-日 时:分:秒.亚秒的字符串比如'2019-12-16 20:50:10.66'日期类型,用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值。

还有很多数据结构,可以参考官方文档。
数组

Array(T):由T类型元素组成的数组。

T可以是任意类型,包含数组类型。但不推荐使用多维数组,ClickHouse对多维数组的支持有限。例如,不能在MergeTree表中存储多维数组。

1)创建数组方式1,使用array函数。

array(T)

SELECT array(1, 2) AS x, toTypeName(x);

图-8 执行结果

2)创建数组方式2:使用方括号。

[]

SELECT [1, 2] AS x, toTypeName(x);

图-9 执行结果

相关推荐
番茄炒西红柿炒蛋5 分钟前
秋招Java后端开发冲刺——非关系型数据库篇(Redis)
数据库·redis·nosql
modelsetget29 分钟前
MySQL锁机制详细笔记
数据库·mysql·面试·数据库锁
人才程序员36 分钟前
【Rust入门】生成随机数
开发语言·数据库·后端·单片机·rust
小森( ﹡ˆoˆ﹡ )42 分钟前
【neo4j图数据库】入门实践篇
数据库·人工智能·机器学习·nlp·neo4j
天蓝蓝的本我1 小时前
SQL Server查看所有的数据库、所有的表 以及表的描述
数据库·sqlserver
快快小毛毛1 小时前
弹性伸缩高性能计算服务一一黑石裸金属服务器
运维·服务器·网络·数据库·安全
武帝为此1 小时前
【Spring Boot AOP通知顺序】
java·数据库·spring boot
DaGod1231 小时前
set_source_files_properties QT_QML_SINGLETON_TYPE
数据库
不爱洗脚的小滕1 小时前
【MySQL】SQL注入的介绍
数据库·sql·mysql
阿福不是狗1 小时前
PyQt5之理解和使用Python中的qasync:连接Qt和asyncio的桥梁
数据库·python·qt