clickhouse基础数据类型

数值类型

  • Int

clickhouse中int类型主要分为Int8, Int16, Int32, Int64,每种子类型占用字节及范围见下表:

类型 字节 数值范围
Int8 1 -128 ~ 127
Int16 2 -32768 ~ 32767
Int32 4 -2147483648 ~ 2147483647
Int64 8 -9223372036854775808 ~ 9223372036854775807

另外clickhouse中也支持无符号整数,对应的子类型前加U表示对应的无符号类型,见下表:

类型 字节 数值范围
UInt8 1 0 ~ 255
UInt16 2 0 ~ 65535
UInt32 4 0 ~ 4294967295
UInt64 8 0 ~ 18446744073709551615
  • Float

clickhoust中有两种子Float类型,Float32和Float64,分别代表单精度浮点数和双精度浮点数,见下表:

类型 字节 有效小数位数
Float32 4 7
Float64 8 16
  • Decimal

如果Float类型还不能够满足精度需求,clickhouse还提供了Decimal(定点数)类型,分别由Decimal32, Decimal64, Decimal128三种子类型。Decimal类型有两种申明方式:

* 简写方式:Decimal32(S)/Decimal64(S)/Decimal128(S)
* 原生方式:Decimal(P, S)
其中P代表精度,表示总位数(整数部分+小数部分),取值范围:1 ~ 38
S表示小数位数,取值范围:0 ~ P
类型 等效声明 数值范围
Decimal32(S) Decimal(1 ~ 9, S) -1 * 10^(9-S) ~ 1 * 10^(9-S)
Decimal64(S) Decimal(10 ~ 18, S) -1 * 10^(18-S) ~ 1 * 10^(19-S)
Decimal128(S) Decimal(19 ~ 38, S) -1 * 10^(38-S) ~ 1 * 10^(38-S)

当使用不通精度的定点数进行四则运算时,精度S会发生变化,变化规则见下表:

运算类型 精度变化规则
加法 S = max(S1, S2)
减法 S = max(S1, S2)
乘法 S = S1 + S2 (S1 >= S2)
除法 S = S1 (S1为被除数精度)

字符串类型

  • String

String定义的字符串没有长度,字符集的限制,覆盖了传统意义上的Varchar, Text等字符类型

  • FixedString

FixedString适用于需要明确字符串长度的场景,通过FixedString(N)声明一个长度为N的定长字符串,实际长度不够时会用null来补充

  • UUID

UUID共有32位,格式为 8-4-4-4-12,如果没有赋值,则全部用0填充

时间类型

  • DateTime

DateTime类型包含时,分,秒信息,精确到秒,可以直接使用字符串形式写入,例如 "2020-10-30 11:34:23"

  • DateTime64

DateTime64类型能够记录到亚秒级别,在DateTime的基础上增加了精度的设置

  • Date

Date类型不包含具体的时间信息,只精确到天,同样支持字符串形式直接写入

你可能感兴趣的:(clickhouse基础数据类型)