美文网首页
Clickhouse的数据类型

Clickhouse的数据类型

作者: php转go | 来源:发表于2023-01-03 14:32 被阅读0次

一基本数据类型

1整数类型:
Int8/Int16/Int32/Int64

分别对应MYSQL类型tinyint/smallint/int/bigint
取值范围:是-2的(Int后数字-1)的平方到2的(Int后数字的平方-1)-1,Int8对应-128~127

UInt8/UInt16/UInt32/UInt64

前面加U 例如 UInt8 代表全部是正数,
取值范围0到2的Int后面数字次方-1,如UInt8对应0-255

2 浮点类型:
Float32/Float64

分别对应mysql的float与double

Decimal(n,p)
对应于mysql decimal(n,p)
但是有简写形式Decimal32(p),Decimal64(p),Decimal128(p),分别对应
Decimal(1~9,p),Decimal(10~18,p)``Decimal(19~38,p)

3 字符串类型
String/FixedString/UUID

String不像mysql一样有大小限制,它可以表示成msyql varchar/text/clob/blob的合集
FixedString(n) 定长字符串,相当于char

4 日期类型
Dateyyyy-MM-dd格式
DateTime yyyy-MM-dd HH:mm:ss格式

二 复杂数据类型

1 数组
Array(类型)

create table ArrayTest(arr Array(String))engine=TinyLog;  
insert into ArrayTest values(['a','b']);
insert into ArrayTest values(array('a','b','c'));
select * from ArrayTest

2 Tuple元组类型
Array中只能有一种数据类型,而Tuple可以是自己定义的多种类型
Tuple(类型1,类型2,类型3…)

create table tupleTest(tup Tuple(Int32,String,Decimal(2,1)))engine =TinyLog ;
insert into tupleTest values((1,'zhangsan',1.2));
select * from tupleTest;

3 枚举
Enum8(xxx)/Enum16(xxx)分别对应 [-128, 127],[-32768, 32767]
用法:

create table enumTest (e Enum8('hello' = 1, 'world' = 2))engine= TinyLog;
insert into enumTest values('world');
insert into enumTest values('aaa');

第二条sql会报错
枚举类型的排序会根据后面对应的int类型排.
4 嵌套类型
Nested(name1 type1,name2 type2…)
可以理解成Array(Array(type1),Array(type2)…)

create table nestedTest(n Nested(id Int32,name String))engine=TinyLog;
insert into nestedTest values([1,2],['zhangsan','lisi']);
insert into nestedTest values([3,4,5],['zhaoliu','tianqi']);

第二行报错,因为同一行中的两个字段id与name长度必须一样.
查询:

select n.id,n.name from nestedTest

5 Nullable(type)可为null的类型

create table nullTest(id Int32)engine =TinyLog;
insert into nullTest values(null);

会报错,不允许为null

 create table nullTest2(id Nullable(Int32))engine =TinyLog;
 insert into nullTest2 values(null);

相关文章

网友评论

      本文标题:Clickhouse的数据类型

      本文链接:https://www.haomeiwen.com/subject/dpzxrrtx.html