开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情
生命不息,学习不止
题外话
周六,周六,everybody是周六,想我这么热爱学习,周六还在勤勤恳恳写博客的好学者,就应该收到上天的宠爱,比如让我中个大乐透啥的,不说了,买大乐透去
废话不多说,上货
复合数据类型
clickhouse 支持四种复合数据类型,数组,元组,枚举和嵌套
1.数组支持自动类型判断,一般选择最优类型(最小储存类型优先),例如[1,2]会判定为[int8]
但不支持混合类型数组,例如 ["1111“,2222]
2.元组则很像是增强版的数组,支持不同数据类型的元素,创建元组数据类型的列需要在初始化的时候声明元素的数据类型
举个列子
// 创建一个包含 元组类型列 user,元素类型string,int8 的数据库表 Test
Create Table Test (user Tuple(string,int8)) Engine = AggregatingMergeTree
提前声明的很大一部分作用在于提前检测,当insert 时候进行校验,不符合声明的类型则无法插入数据
3.clickhouse支持使用枚举类型定义常量数据,使用键值对的方式(string/int8,string/int16)
Enum8对应(String:Int8)
Enum16对应 (String:Int16)
举个例子
// 创建一个包含 枚举类型列 user 的数据库表 Test
Create Table Test (user Enum8('age'= 15,'number'=22)) Engine = AggregatingMergeTree
ps :
键值对的key和value具有唯一性,不允许重复。
键值对的key和value不能为Null,但key可以是空字符串。
4.嵌套类型在多种数据库里都有类似结构,常用于数据直接具有关联性的场景,例如上下关系,包含关系等等
clickhouse中的嵌套类型类似于多维数组,通过 Nested关键字声明
举个例子
// 创建一个包含 嵌套类型列 user(id,name),和string 类型列 class 的数据库表 Test
Create Table Test (user Nested(id Uint8,name string),class string) Engine = AggregatingMergeTree
你以为结束了
下一篇我们继续挖坑
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!