ClickHouse數據類型

一:與其他框架對比

   MySQL Hive CLickHouse(區分大小寫)
byte TINYINT Int8
short SMALLINT Int16
int INT

                     Int32

long BIGINT Int64
varchar STRING String
timestamp TIMESTAMP DateTime
float FLOAT Float32
double DOUBLE Float64
boolean BOOLEAN

      注:ClickHouse並非沒有布爾類型,後面會講到如何創建和使用。

二:常用類型的介紹和使用

1. 整型

      固定長度的整型,包括有符號整型和無符號整型。

      整型範圍:-2^(n-1)~2^(n-1)-1

      Int8:-128~127

      Int16:-32768~32767

      Int32:-2147483648~2147483647

      Int64:-922337203854775808~922337203854775807

      無符號整型範圍:0~2^n-1

      UInt8:0~255

      UInt16:0~65535

      UInt32:0~4294967295

      UInt64:0~18446744073709551615

2. 浮點型

      Float32~float

      Float64~double

      建議儘可能使用整型存儲數據,浮點數會引起誤差!

      與標準SQL相比,還支持以下類型:

      Inf-正無窮

      -Inf-負無窮

      NaN-非數字

3. 布爾型

      沒有單獨的類型存儲布爾值,可用UInt8類型,取值限制爲0或1,具體用法後面再講。

4. 字符串

      1)String

      字符串長度是任意的,並且可以包含任意字符集,包含空字節。

      2)FixedString(N)

      類似於varchar,固定長度N的字符串,N必須是嚴格的正自然數,當服務端讀取長度小於N的字符串時,通過在末尾添加空字節來達到N字節長度。大於N時,返回錯誤消息。

      相比較而言,String已經足夠強大,很少使用FixedString,因爲用起來不是很方便。

5. 枚舉類型

       包括Enum8和Enum16類型,Enum保存‘string’=integer的對應關係。

       Enum8用‘String’=Int8對描述。

       Enum16用‘String’=Int16對描述。

      用法演示:

      創建一個帶有一個枚舉Enum8(‘hello’=1,‘world’=2)類型的列:

CREATE TABLE t_enum
(
    x Enum8('hello' = 1, 'world' = 2)
)
ENGINE = TinyLog;

      這個x列只能存儲類型定義中列出的值:‘hello’或者‘world’,插入其他值會報錯。

insert into t_enum values('hello'),('world');

      如果要看數值:

select cast(x,'Int8') from t_enum;

       運行結果:

 6. Date

      日期類型,用兩個字節存儲,表示從1970-01-01(無符號)到當前的日期值。

      還有其他很多數據類型,數組元組等,此處不再敖述,可以直接去看官方文檔http://clickhouse.yandex/docs/zh/data_types

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章