数据类型
此章节描述ClickHouse的数据类型。
数据类型表
分类 |
关键字 |
数据类型 |
描述 |
---|---|---|---|
整数类型 |
Int8 |
Int8 |
取值范围:【-128,127】 |
Int16 |
Int16 |
取值范围:【-32768,32767】 |
|
Int32 |
Int32 |
取值范围:【-2147483648,2147483647】 |
|
Int64 |
Int64 |
取值范围:【-9223372036854775808,9223372036854775807】 |
|
浮点类型 |
Float32 |
单精度浮点数 |
同C语言Float类型,单精度浮点数在机内占4个字节,用32位二进制描述。 |
Float64 |
双精度浮点数 |
同C语言Double类型,双精度浮点数在机内占8个字节,用64位二进制描述。 |
|
Decimal类型 |
Decimal |
Decimal |
有符号的定点数,可在加、减和乘法运算过程中保持精度。支持几种写法:
|
字符串类型 |
String |
字符串 |
字符串可以是任意长度的。它可以包含任意的字节集,包含空字节。因此,字符串类型可以代替其他DBMSs中的VARCHAR、BLOB、CLOB等类型。 |
FixedString |
固定字符串 |
当数据的长度恰好为N个字节时,FixedString类型是高效的。 在其他情况下,这可能会降低效率。可以有效存储在FixedString类型的列中的值的示例:
|
|
时间日期类型 |
Date |
日期 |
用两个字节存储,表示从1970-01-01(无符号)到当前的日期值。日期中没有存储时区信息。 |
DateTime |
时间戳 |
用四个字节(无符号的)存储Unix时间戳。允许存储与日期类型相同的范围内的值。最小值为1970-01-01 00:00:00。时间戳类型值精确到秒(没有闰秒)。时区使用启动客户端或服务器时的系统时区。 |
|
DateTime64 |
DateTime64 |
此类型允许以日期(date)加时间(time)的形式来存储一个时刻的时间值。 |
|
布尔型 |
Boolean |
Boolean |
ClickHouse没有单独的类型来存储布尔值。可以使用UInt8 类型,取值限制为0或1。 |
数组类型 |
Array |
Array |
Array(T),由T类型元素组成的数组。T可以是任意类型,包含数组类型。但不推荐使用多维数组,ClickHouse对多维数组的支持有限。例如,不能在MergeTree表中存储多维数组。 |
元组类型 |
Tuple |
Tuple |
Tuple(T1, T2, ...),元组,其中每个元素都有单独的类型,不能在表中存储元组(除了内存表)。它们可以用于临时列分组。在查询中,IN表达式和带特定参数的lambda函数可以来对临时列进行分组。 |
Domains数据类型 |
Domains |
Domains |
Domains类型是特定实现的类型:
|
枚举类型 |
Enum8 |
Enum8 |
取值范围:【-128,127】 Enum保存 'string'= integer的对应关系,例如:Enum8('hello' = 1, 'world' = 2) |
Enum16 |
Enum16 |
取值范围:【-32768,32767】 |
|
可为空 |
Nullable |
Nullable |
除非在ClickHouse服务器配置中另有说明,否则NULL是任何Nullable类型的默认值。Nullable类型字段不能包含在表索引中。 可以与TypeName的正常值存放一起。例如,Nullable(Int8) 类型的列可以存储Int8类型值,而没有值的行将存储NULL。 |
嵌套类型 |
nested |
nested |
嵌套的数据结构就像单元格内的表格。嵌套数据结构的参数(列名和类型)的指定方式与CREATE TABLE查询中的指定方式相同。每个表行都可以对应于嵌套数据结构中的任意数量的行。 示例:Nested(Name1 Type1, Name2 Type2, …) |