暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse数据类型与应用场景

IT那活儿 2025-02-27
25
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  
  
ClickHouse是一款高性能、面向列的 SQL 数据库管理系统 (DBMS),在大数据处理领域有着广泛应用。
本文将展示ClickHouse中的核心数据类型及其在各种应用场景中的使用。



整型

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

1.1 有符号整型范围(-2^n-1~2^n-1 -1)

Int8 - [-128 : 127]  #  8位,对应Java中的byte

Int16 - [-32768 : 32767]  # 16位,对应Java中的short

Int32 - [-2147483648 : 2147483647]

Int64 - [-9223372036854775808 : 9223372036854775807]

应用场景:

适用于需要整数存储的场景,如用户ID、年龄、计数等。

1.2 无符号整型范围(0~2^n-1)

UInt8 - [0 : 255]

UInt16 - [0 : 65535]

UInt32 - [0 : 4294967295]

UInt64 - [0 : 18446744073709551615]

应用场景:

适用于不需要负数表示的场景,如文件大小、网络端口号等,这些类型更为合适。


浮点型

2.1 Float32 

32位浮点型。

2.2 Float64

64位浮点型。

举例:

控制台执行sql语句select 1-0.9:

应用场景:

浮点型数据类型适用于数据值较小、不涉及大量统计计算且精度要求不高的场景,例如科学计算。


字符型

3.1 String

可变长度字符串类型。

应用场景:

适用于存储长度可变的文本数据,如用户名称、描述信息等。

3.2 FixedString(N)

固定长度字符串类型,N为字符串长度。

应用场景

适用于字符串最大长度且长度固定不变的场景,使用FixedString可以提高存储效率和查询性能,如固定格式的日志消息等。


Decimal型

4.1 Decimal32(s)

相当于 Decimal(9-s,s),有效位数为 1~9。

4.2 Decimal64(s)

相当于 Decimal(18-s,s),有效位数为 1~18。

4.3 Decimal128(s)

相当于 Decimal(38-s,s),有效位数为 1~38。

举例:

Decimal32(5),即整数+小数一共9位,小数部分5位。

应用场景: 

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


枚举类型

5.1 Enum8

枚举值类型为Int8。

5.2 Enum16

枚举值类型为Int16。

举例:

创建一个表,其中x列是枚举类型:

这个枚举类型保存了两个String和和Int的对应关系。这个 x 列只能存储类型定义中列出的值:‘success或’fail’。

插入数据:

INSERT INTO t_enum VALUES ('fail'), ('success'), (1);

表数据:

插入其他数据:

INSERT INTO t_enum VALUES ('a');

报错:

需要看到完整的枚举数据,执行命令:

SELECT toTypeName(x) FROM t_enum;

应用场景:

枚举类型适用于表示有限的状态或类型,如订单状态(成功、失败)、用户类型等,既节省了空间又增强了数据约束。


时间类型

6.1 Date

接受年-月-日的字符串比如 ‘2019-12-16’。

6.2 Datetime

接受年-月-日 时:分:秒的字符串比如 ‘2019-12-16 20:50:10’。

6.3 Datetime64

接受年-月-日 时:分:秒.亚秒的字符串比如‘2019-12-16 20:50:10.66’。

应用场景:

时间类型在处理时间序列数据、日志分析和用户行为追踪等方面至关重要。


数组

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

7.1 创建数组的方式1:使用array函数

  • # toTypeName(x) 函数,获取当前字段的类型;

  • # array(1, 2) AS x即1、2两个数字放这个数组里,起名x。

SELECT array(12AS x, toTypeName(x) ;

7.2 创建数组的方式2:使用方括号

SELECT [12AS x, toTypeName(x);

应用场景:

数组类型在处理列表数据、批量操作和复杂查询。


END


本文作者:刘怡畅(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论