整数型
有符号整型(-2n-1~2n-1-1):
- Int8 - [-128 : 127] - 1byte
- Int16 - [-32768 : 32767] - 2byte
- Int32 - [-2147483648 : 2147483647] - 4byte
- Int64 - [-9223372036854775808 : 9223372036854775807] - 8byte
无符号整型范围(0~2n-1):
- UInt8 - [0 : 255]
- UInt16 - [0 : 65535]
- UInt32 - [0 : 4294967295]
- UInt64 - [0 : 18446744073709551615]
浮点型
- Float32 - float
- Float64 – double
布尔型
没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0 或 1
Decimal
高精度的数值运算 S=小数位数
- Decimal32(S)
- Decimal64(S)
- Decimal128(S)
字符串
- 变长字符串 String
字符串可以任意长度的。它可以包含任意的字节集,包含空字节。 - 定长字符串 FixedString(N)
固定长度 N 的字符串,N 必须是严格的正自然数。当服务端读取长度小于 N 的字符串时候,通过在字符串末尾添加空字节来达到 N 字节长度。 当服务端读取长度大于 N 的字符串时候,将返回错误消息。
与String相比,极少会使用FixedString,因为使用起来不是很方便。
枚举类型
- Enum8 用 ‘String’= Int8 对描述。
- Enum16 用 ‘String’= Int16 对描述。
Enum 保存 ‘string’ = integer 的对应关系。
数据组
- Array(T)
注意:数据类型要求数组的类型保持一致
由 T 类型元素组成的数组。T 可以是任意类型,包括了数组类型,但是不推荐使用多维数组,ClickHouse对多维数组的支持有限。
可以使用array()函数和中括号来创建数组[1,2,3,4,5] or array('a','b','c','d','e')
# 可以根据索引查询,clickhouse的数组类型索引是从1开始的
select id ,hobby[1] from student;
元组
- Tuple(T1, T2, …)
元组,由1~n个元素组成,每个元素之间允许设置不同的数据类型,且彼此之间不要求兼容。元组同样支持类型推断,其推断依据仍然以最小存储代价为原则。与数组类似,元组也可以使用两种方式定义,常规方式tuple(T):元组中可以存储多种数据类型,但是要注意数据类型的顺序
日期
- Date
用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值, 最小值输出为0000-00-00。
时间戳
- DateTime
用四个字节(无符号的)存储 Unix 时间戳,允许存储与日期类型相同的范围内的值。最小值为 0000-00-00 00:00:00,时间戳类型值精确到秒。