整数型

有符号整型(-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')

  1. # 可以根据索引查询,clickhouse的数组类型索引是从1开始的
  2. 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,时间戳类型值精确到秒。