本文描述云數據庫ClickHouse的數據類型。
數據類型列表
ClickHouse完整數據類型介紹,請參考開源官方數據類型介紹。
分類 | 關鍵字 | 數據類型 | 取值/取值范圍 |
整數類型 |
| Int8 | 取值范圍: |
| Int16 | 取值范圍 : | |
| Int32 | 取值范圍: | |
| Int64 | 取值范圍 : | |
浮點類型 |
| 單精度浮點數 | 同C語言Float類型,單精度浮點數在機內占4個字節,用32位二進制描述。 |
| 雙精度浮點數 | 同C語言Double類型,雙精度浮點數在機內占8個字節,用64位二進制描述。 | |
Decimal類型 |
| Decimal | 有符號的定點數,可在加、減和乘法運算過程中保持精度。支持幾種寫法:
|
字符串類型 |
| 字符串 | 字符串可以是任意長度的。它可以包含任意的字節集,包含空字節。因此,字符串類型可以代替其他 DBMSs 中的VARCHAR、BLOB、CLOB 等類型。 |
FixedString | 固定字符串 | 當數據的長度恰好為N個字節時,FixedString類型是高效的。 在其他情況下,這可能會降低效率。可以有效存儲在FixedString類型的列中的值的示例:
| |
時間日期類型 |
| 日期 | 用兩個字節存儲,表示從 1970-01-01(無符號)到當前的日期值。日期中沒有存儲時區信息。 |
| 時間戳 | 用四個字節(無符號的)存儲 Unix 時間戳。允許存儲與日期類型相同的范圍內的值。最小值為 1970-01-01 00:00:00。時間戳類型值精確到秒(沒有閏秒)。時區使用啟動客戶端或服務器時的系統時區。 | |
| Datetime64 | 此類型允許以日期(date)加時間(time)的形式來存儲一個時刻的時間值。 | |
布爾型 | Boolean | Boolean | ClickHouse沒有單獨的類型來存儲布爾值。可以使用UInt8 類型,取值限制為0或 1。 |
數組類型 |
| Array | Array(T),由 T 類型元素組成的數組。T 可以是任意類型,包含數組類型。但不推薦使用多維數組,ClickHouse對多維數組的支持有限。例如,不能在MergeTree表中存儲多維數組。 |
元組類型 |
| Tuple | Tuple(T1, T2, ...),元組,其中每個元素都有單獨的類型,不能在表中存儲元組(除了內存表)。它們可以用于臨時列分組。在查詢中,IN表達式和帶特定參數的 lambda 函數可以來對臨時列進行分組。 |
Domain數據類型 |
| Domain | Domain類型是特定實現的類型: IPv4是與UInt32類型保持二進制兼容的Domain類型,用于存儲IPv4地址的值。它提供了更為緊湊的二進制存儲的同時支持識別可讀性更加友好的輸入輸出格式。 IPv6是與FixedString(16)類型保持二進制兼容的Domain類型,用于存儲IPv6地址的值。它提供了更為緊湊的二進制存儲的同時支持識別可讀性更加友好的輸入輸出格式。 |
枚舉類型 |
| Enum8 | 取值范圍: |
| Enum16 | 取值范圍 : | |
可為空 |
| Nullable | 除非在 ClickHouse 服務器配置中另有說明,否則 NULL 是任何 Nullable 類型的默認值。Nullable 類型字段不能包含在表索引中。 |
嵌套類型 |
| nested | 嵌套的數據結構就像單元格內的表格。嵌套數據結構的參數(列名和類型)的指定方式與CREATE TABLE查詢中的指定方式相同。每個表行都可以對應于嵌套數據結構中的任意數量的行。 |