数值类型
- 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类型不包含具体的时间信息,只精确到天,同样支持字符串形式直接写入