數(shù)值類(lèi)型
- Int
clickhouse中int類(lèi)型主要分為Int8, Int16, Int32, Int64,每種子類(lèi)型占用字節(jié)及范圍見(jiàn)下表:
| 類(lèi)型 | 字節(jié) | 數(shù)值范圍 |
|---|---|---|
| Int8 | 1 | -128 ~ 127 |
| Int16 | 2 | -32768 ~ 32767 |
| Int32 | 4 | -2147483648 ~ 2147483647 |
| Int64 | 8 | -9223372036854775808 ~ 9223372036854775807 |
另外clickhouse中也支持無(wú)符號(hào)整數(shù),對(duì)應(yīng)的子類(lèi)型前加U表示對(duì)應(yīng)的無(wú)符號(hào)類(lèi)型,見(jiàn)下表:
| 類(lèi)型 | 字節(jié) | 數(shù)值范圍 |
|---|---|---|
| UInt8 | 1 | 0 ~ 255 |
| UInt16 | 2 | 0 ~ 65535 |
| UInt32 | 4 | 0 ~ 4294967295 |
| UInt64 | 8 | 0 ~ 18446744073709551615 |
- Float
clickhoust中有兩種子Float類(lèi)型,F(xiàn)loat32和Float64,分別代表單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù),見(jiàn)下表:
| 類(lèi)型 | 字節(jié) | 有效小數(shù)位數(shù) |
|---|---|---|
| Float32 | 4 | 7 |
| Float64 | 8 | 16 |
- Decimal
如果Float類(lèi)型還不能夠滿(mǎn)足精度需求,clickhouse還提供了Decimal(定點(diǎn)數(shù))類(lèi)型,分別由Decimal32, Decimal64, Decimal128三種子類(lèi)型。Decimal類(lèi)型有兩種申明方式:
* 簡(jiǎn)寫(xiě)方式:Decimal32(S)/Decimal64(S)/Decimal128(S)
* 原生方式:Decimal(P, S)
其中P代表精度,表示總位數(shù)(整數(shù)部分+小數(shù)部分),取值范圍:1 ~ 38
S表示小數(shù)位數(shù),取值范圍:0 ~ P
| 類(lèi)型 | 等效聲明 | 數(shù)值范圍 |
|---|---|---|
| Decimal32(S) | Decimal(1 ~ 9, S) | -1 * 10^(9-S) ~ 1 * 10^(9-S) |
| Decimal64(S) | Decimal(10 ~ 18, S) | -1 * 10^(18-S) ~ 1 * 10^(19-S) |
| Decimal128(S) | Decimal(19 ~ 38, S) | -1 * 10^(38-S) ~ 1 * 10^(38-S) |
當(dāng)使用不通精度的定點(diǎn)數(shù)進(jìn)行四則運(yùn)算時(shí),精度S會(huì)發(fā)生變化,變化規(guī)則見(jiàn)下表:
| 運(yùn)算類(lèi)型 | 精度變化規(guī)則 |
|---|---|
| 加法 | S = max(S1, S2) |
| 減法 | S = max(S1, S2) |
| 乘法 | S = S1 + S2 (S1 >= S2) |
| 除法 | S = S1 (S1為被除數(shù)精度) |
字符串類(lèi)型
- String
String定義的字符串沒(méi)有長(zhǎng)度,字符集的限制,覆蓋了傳統(tǒng)意義上的Varchar, Text等字符類(lèi)型
- FixedString
FixedString適用于需要明確字符串長(zhǎng)度的場(chǎng)景,通過(guò)FixedString(N)聲明一個(gè)長(zhǎng)度為N的定長(zhǎng)字符串,實(shí)際長(zhǎng)度不夠時(shí)會(huì)用null來(lái)補(bǔ)充
- UUID
UUID共有32位,格式為 8-4-4-4-12,如果沒(méi)有賦值,則全部用0填充
時(shí)間類(lèi)型
- DateTime
DateTime類(lèi)型包含時(shí),分,秒信息,精確到秒,可以直接使用字符串形式寫(xiě)入,例如 "2020-10-30 11:34:23"
- DateTime64
DateTime64類(lèi)型能夠記錄到亞秒級(jí)別,在DateTime的基礎(chǔ)上增加了精度的設(shè)置
- Date
Date類(lèi)型不包含具體的時(shí)間信息,只精確到天,同樣支持字符串形式直接寫(xiě)入