一、数据类型
基础类型只有数值、字符串和时间三种类型,没有 Boolean 类型,但可以使用整型的 0 或 1 替代
1.数值类型
int8,int16,int32,int64
整形范围:-2^(n-1) ~ 2^(n-1)-1 无符号整型范围 0 ~ 2^n -1
float32,float64
Float32 和 Float64 代表单精度浮点数以及双精度浮点数
单精度 8位小数 双精度 16位小数
inf 正无穷 -inf 负无穷 nan 非数字
decimal(p,s) p 精度 s 规模
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^(18-S)
Decimal128(S) Decimal(19~38, S) -1 * 10^(38-S) 到 1 * 10^(38-S)
加法 S = max(S1, S2)
减法 S = max(S1, S2)
乘法 S = S1 + S2(S1范围 >= S2范围)
除法 S = S1(S1为被除数,S1/S2)
2.字符串
string fixedstring uuid
fixedstring 不足固定长度部分是Null补足
3.时间
date 支持字符串写入
datetime 支持字符串写入
datetime64 可以设置精度,最精细可以记录到亚秒
4.枚举类型
enum8 string = int8
enum16 string = int16
枚举类型是为了计算性能,真正参与计算的是数值型的值
5.数组
数组只能存放类型相同的,如果[1,2,'a'] 将引发异常
6.元组
每个元素都可以有不同的类型
7.嵌套
clickhouse只支持单层嵌套
8.Domain
pv4 ipv6
二、SQL
1.支持物化视图,物化视图的数据会随原表改变
2.删除原表不会删除物化视图
3.支持分区、分桶。分区只有mergetree家族的引擎支持,表结构、分区完全一致的情况下,可以复制分区到新表分区;分区的数据可以卸载,卸载后也可以再次装载,卸载后的数据不再受clickhouse管理,数据一直存在,除非手动删除;
4.分布式执行DDL,可以通过关键字“on cluster” 指定语句在集群上执行
5.clickhouse支持mutation,Mutation执行过程是异步的,不可回滚,虽然可以达到update和delete的效果,但是执行过程中的数据会被直接影响;
所以,ETL过程中,建议用临时表备份原始数据
update 不能修改分区键和主键