一:與其他框架對比
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