zoukankan      html  css  js  c++  java
  • clickhouse基本数据类型总结

    个人学习笔记,谢绝转载!!!
    原文:https://www.cnblogs.com/wshenjin/p/13072989.html


    整型

    有符号整型(-2n-1~2n-1-1):

    • Int8 - [-128 : 127]
    • Int16 - [-32768 : 32767]
    • Int32 - [-2147483648 : 2147483647]
    • Int64 - [-9223372036854775808 : 9223372036854775807]

    无符号整型范围(0~2n-1):

    • UInt8 - [0 : 255]
    • UInt16 - [0 : 65535]
    • UInt32 - [0 : 4294967295]
    • UInt64 - [0 : 18446744073709551615]

    浮点型

    • Float32 - float
    • Float64 – double

    布尔型

    没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0 或 1。

    字符串

    • 变长字符串 String
      字符串可以任意长度的。它可以包含任意的字节集,包含空字节。

    • 定长字符串 FixedString(N)
      固定长度 N 的字符串,N 必须是严格的正自然数。当服务端读取长度小于 N 的字符串时候,通过在字符串末尾添加空字节来达到 N 字节长度。 当服务端读取长度大于 N 的字符串时候,将返回错误消息。
      与String相比,极少会使用FixedString,因为使用起来不是很方便。

    枚举类型

    • Enum8 用 'String'= Int8 对描述。
    • Enum16 用 'String'= Int16 对描述。

    Enum 保存 'string'= integer 的对应关系。在 ClickHouse 中,尽管用户使用的是字符串常量,但所有含有 Enum 数据类型的操作都是按照包含整数的值来执行。这在性能方面比使用 String 数据类型更有效。
    举例:

    #新建一张带Enum8类型的表:
    localhost :) CREATE TABLE  enum_t (  et Enum8('a' = 1, 'b' = 2, 'c' =3)) ENGINE = TinyLog;
    localhost :) DESC enum_t ;
    ┌─name─┬─type─────────────────────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
    │ et   │ Enum8('a' = 1, 'b' = 2, 'c' = 3) │              │                    │         │                  │                │
    └──────┴──────────────────────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
    
    #插入数据
    localhost :) INSERT INTO enum_t(et) VALUES ('a'),('a'),('b');
    
    #查看
    localhost :) SELECT * FROM enum_t ;
    ┌─et─┐
    │ a  │
    │ a  │
    │ b  │
    └────┘
    
    #如果需要看到对应行的数值,则必须将 Enum 值转换为整数类型:
    localhost :) SELECT CAST(et, 'Int8') FROM enum_t ;
    ┌─CAST(et, 'Int8')─┐
    │                1 │
    │                1 │
    │                2 │
    └──────────────────┘
    

    数据组

    • Array(T)

    由 T 类型元素组成的数组。T 可以是任意类型,包含数组类型,但不推荐使用多维数组,ClickHouse 对多维数组的支持有限。
    可以使用array()函数和中括号来创建数组

    举例:

    #新建两张带Array类型的表:
    localhost :) CREATE TABLE array_t (arr Array(UInt8)) ENGINE = TinyLog;
    localhost :) CREATE TABLE array_ta (arr Array(String)) ENGINE = TinyLog;
    
    #插入数组
    localhost :) INSERT INTO array_t VALUES([1,2,3,4,5]),(array(11,22,33,44,55));
    localhost :) INSERT INTO array_ta VALUES(['a','b','c']),(array('x','y','z','123'));
    
    #查看结果
    localhost :) SELECT * FROM array_t ;
    ┌─arr──────────────┐
    │ [1,2,3,4,5]      │
    │ [11,22,33,44,55] │
    └──────────────────┘
    
    localhost :) SELECT * FROM array_ta;
    ┌─arr─────────────────┐
    │ ['a','b','c']       │
    │ ['x','y','z','123'] │
    └─────────────────────┘
    
    

    元组

    • Tuple(T1, T2, ...)

    元组,其中每个元素都有单独的类型。

    举个例子:

    #创建一张带tuple字段的表:
    localhost :) CREATE TABLE tuple_t (ttt Tuple(Int8, String, Array(String), Array(Int8))) ENGINE = TinyLog;
    
    #插入数据
    localhost :) INSERT INTO tuple_t VALUES((1, 'a', ['a', 'b', 'c'], [1, 2, 3])),(tuple(11, 'A', ['A', 'B', 'C'], [11, 22, 33]));
    
    #查看数据
    localhost :) SELECT * FROM tuple_t ;
    ┌─ttt───────────────────────────────┐
    │ (1,'a',['a','b','c'],[1,2,3])     │
    │ (11,'A',['A','B','C'],[11,22,33]) │
    └───────────────────────────────────┘
    

    日期

    • Date

    用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值, 最小值输出为0000-00-00。

    时间戳

    • DateTime

    用四个字节(无符号的)存储 Unix 时间戳,允许存储与日期类型相同的范围内的值。最小值为 0000-00-00 00:00:00,时间戳类型值精确到秒。

  • 相关阅读:
    How to function call using 'this' inside forEach loop
    jquery.validate.unobtrusive not working with dynamic injected elements
    Difference between jQuery.extend and jQuery.fn.extend?
    Methods, Computed, and Watchers in Vue.js
    Caution using watchers for objects in Vue
    How to Watch Deep Data Structures in Vue (Arrays and Objects)
    Page: DOMContentLoaded, load, beforeunload, unload
    linux bridge
    linux bridge
    EVE-NG网卡桥接
  • 原文地址:https://www.cnblogs.com/wshenjin/p/13072989.html
Copyright © 2011-2022 走看看