ClickHouse 數(shù)據(jù)類(lèi)型介紹



UInt8,UInt16屎飘,UInt32妥曲,UInt64,Int8钦购,Int16檐盟,Int32,Int64

固定長(zhǎng)度的整數(shù)押桃,帶或不帶標(biāo)志葵萎。

Float32, Float64

浮點(diǎn)數(shù)就像C語(yǔ)言中的“float”和“double”一樣。與標(biāo)準(zhǔn)SQL相比唱凯,浮點(diǎn)數(shù)支持“inf”羡忘,“-inf”,甚至是“nan”磕昼。請(qǐng)參閱“ORDER BY子句”中有關(guān)排序nans的注釋卷雕。我們不建議在表格中存儲(chǔ)浮點(diǎn)數(shù)。

字符串

任意長(zhǎng)度的字符串票从。長(zhǎng)度不限漫雕。該值可以包含任意字節(jié)集滨嘱,包括空字節(jié)。String類(lèi)型替換了其他DBMS類(lèi)型的VARCHAR蝎亚,BLOB九孩,CLOB和其他類(lèi)型。

編碼

ClickHouse沒(méi)有編碼的概念发框。字符串可以包含一組任意字節(jié)躺彬,這些字節(jié)按原樣存儲(chǔ)和輸出。如果您需要存儲(chǔ)文本梅惯,我們推薦使用UTF-8編碼宪拥。至少,如果您的終端使用UTF-8(如所推薦的)铣减,則可以在不進(jìn)行轉(zhuǎn)換的情況下讀取和寫(xiě)入您的值她君。類(lèi)似地,使用字符串的某些函數(shù)具有單獨(dú)的變體葫哗,這些變體在字符串包含表示UTF-8編碼文本的一組字節(jié)的假設(shè)下工作缔刹。例如,“l(fā)ength”函數(shù)以字節(jié)為單位計(jì)算字符串長(zhǎng)度劣针,而“l(fā)engthUTF8”函數(shù)以Unicode代碼點(diǎn)為單位計(jì)算字符串長(zhǎng)度校镐,假設(shè)值為UTF-8編碼。

FixedString(N)

一個(gè)固定長(zhǎng)度的N個(gè)字節(jié)的字符串(不是字符或代碼點(diǎn))捺典。N必須是嚴(yán)格正數(shù)的自然數(shù)鸟廓。當(dāng)服務(wù)器讀取包含較少字節(jié)的字符串(例如,作為在INSERT查詢(xún)中傳遞的輸入)時(shí)襟己,通過(guò)在右側(cè)附加空字節(jié)引谜,字符串被填充為N個(gè)字節(jié)。當(dāng)服務(wù)器讀取包含更多字節(jié)的字符串時(shí)擎浴,將返回錯(cuò)誤消息员咽。當(dāng)服務(wù)器寫(xiě)入一個(gè)字符串(例如,作為SELECT查詢(xún)的輸出)時(shí)贮预,空字節(jié)不會(huì)從字符串末尾刪除贝室,而是輸出。請(qǐng)注意萌狂,這種行為不同于CHAR類(lèi)型的MySQL行為(其中字符串用空格填充档玻,并且空格被移除以用于輸出)。

Date

一個(gè)Date茫藏。以1970-01-01(無(wú)符號(hào))以來(lái)的天數(shù)存儲(chǔ)在兩個(gè)字節(jié)中误趴。允許在Unix Epoch剛剛開(kāi)始之后將值存儲(chǔ)到編譯階段(目前,日期到2038年务傲,但可能擴(kuò)展到2106)由常量定義的上限凉当。最小值輸出為0000-00-00枣申。

日期存儲(chǔ)沒(méi)有時(shí)區(qū)。

DateTime

日期與時(shí)間看杭。以四個(gè)字節(jié)存儲(chǔ)為Unix時(shí)間戳(無(wú)符號(hào))忠藤。允許將值存儲(chǔ)在與日期類(lèi)型相同的范圍內(nèi)。最小值輸出為0000-00-00 00:00:00楼雹。時(shí)間儲(chǔ)存精度高達(dá)1秒(不閏秒)模孩。

時(shí)區(qū)

帶時(shí)間的日期是從客戶端或服務(wù)器啟動(dòng)時(shí)使用系統(tǒng)的時(shí)區(qū),從文本(分為組成部分)轉(zhuǎn)換為二進(jìn)制和返回贮缅。在文本格式中榨咐,關(guān)于夏令時(shí)的信息丟失。

只支持那些時(shí)間從未與世界標(biāo)準(zhǔn)時(shí)間(UTC)有所不同的時(shí)區(qū)谴供,在您要使用的整個(gè)時(shí)間范圍內(nèi)保持部分小時(shí)數(shù)(無(wú)閏秒)块茁。

因此,在處理文本日期時(shí)(例如桂肌,保存文本轉(zhuǎn)儲(chǔ)時(shí))数焊,請(qǐng)記住夏令時(shí)更改時(shí)可能會(huì)有歧義,如果時(shí)區(qū)更改崎场,則可能會(huì)出現(xiàn)匹配數(shù)據(jù)的問(wèn)題佩耳。

枚舉

Enum8或Enum16。存儲(chǔ)為Int8或Int16的一組枚舉字符串值照雁。例:

Enum8('hello'= 1蚕愤,'world'= 2)

- 這個(gè)數(shù)據(jù)類(lèi)型有兩個(gè)值 - 'hello'和'world'答恶。

該數(shù)值必須在-128..127為Enum8和-32768..32767為Enum16饺蚊。枚舉的每個(gè)成員也必須有不同的數(shù)字⌒ぃ空字符串是一個(gè)有效的值污呼。數(shù)字不需要是連續(xù)的,可以以任何順序包竹。是順序無(wú)關(guān)的燕酷。

在內(nèi)存中,數(shù)據(jù)的存儲(chǔ)方式與數(shù)字類(lèi)型Int8和Int16相同周瞎。以文本格式讀取時(shí)苗缩,讀取字符串并查找相應(yīng)的數(shù)值。如果找不到声诸,則會(huì)拋出異常酱讶。當(dāng)以文本格式寫(xiě)入時(shí),查找存儲(chǔ)的數(shù)字并寫(xiě)出相應(yīng)的字符串彼乌。如果數(shù)字不對(duì)應(yīng)已知的值泻肯,則會(huì)拋出異常渊迁。以二進(jìn)制格式,信息以與Int8和Int16相同的方式保存灶挟。Enum的隱式默認(rèn)值是具有最小數(shù)值的值琉朽。

在ORDER BY,GROUP BY稚铣,IN箱叁,DISTINCT等中,枚舉的行為與數(shù)值類(lèi)似惕医。例如蝌蹂,它們將按照ORDER BY中的數(shù)值進(jìn)行排序。Equal和Compare運(yùn)算符的行為就像他們運(yùn)行在數(shù)值上一樣曹锨,無(wú)感知孤个。

枚舉值不能與數(shù)字進(jìn)行比較,它們必須與字符串進(jìn)行比較沛简。如果字符串比較不是Enum的有效值齐鲤,則會(huì)拋出異常。該IN操作符支持與枚舉的左側(cè)和一組在右側(cè)的字符串椒楣。

大多數(shù)數(shù)字和字符串操作沒(méi)有為Enum值定義给郊,例如,將一個(gè)數(shù)字添加到Enum或?qū)⒁粋€(gè)字符串連接到一個(gè)Enum捧灰。但是淆九,可以使用toString函數(shù)將Enum轉(zhuǎn)換為其字符串值。枚舉值也可以使用toT函數(shù)轉(zhuǎn)換為數(shù)字類(lèi)型毛俏,其中T是數(shù)字類(lèi)型炭庙。當(dāng)T對(duì)應(yīng)于枚舉的基礎(chǔ)數(shù)值類(lèi)型時(shí),此轉(zhuǎn)換為零成本煌寇。

可以使用ALTER將新成員添加到Enum焕蹄。如果唯一的變化是對(duì)數(shù)值的設(shè)定,那么操作幾乎是即時(shí)的阀溶。也可以使用ALTER刪除Enum的成員腻脏。刪除成員只有在表中從未使用刪除的值時(shí)才是安全的。作為一種安全措施银锻,更改先前定義的Enum成員的數(shù)值將引發(fā)異常永品。

使用ALTER,它是可以改變的Enum8到Enum16反之亦然-就像改變INT8到Int16的击纬。

Array(T)

T 類(lèi)型的數(shù)組鼎姐。T型可以是任何類(lèi)型,包括數(shù)組。我們不推薦使用多維數(shù)組症见,因?yàn)樗鼈儾槐缓芎玫闹С郑ɡ缥棺撸藘?nèi)存表之外,你不能在多維數(shù)組中存儲(chǔ)多維數(shù)組)谋作。

元組(T1芋肠,T2,...)

元組不能寫(xiě)入表(除了內(nèi)存表)遵蚜。它們用于臨時(shí)列分組帖池。在查詢(xún)中使用IN表達(dá)式時(shí),可以對(duì)列進(jìn)行分組吭净,并指定lambda函數(shù)的某些形式參數(shù)睡汹。有關(guān)更多信息,請(qǐng)參閱“IN運(yùn)算符”和“高階函數(shù)”寂殉。

元組可以作為運(yùn)行查詢(xún)的結(jié)果輸出囚巴。在這種情況下,對(duì)于JSON *以外的文本格式友扰,括號(hào)中的值用逗號(hào)分隔彤叉。在JSON *格式中,元組輸出為數(shù)組(在方括號(hào)中)村怪。

嵌套的數(shù)據(jù)結(jié)構(gòu)

嵌套(Name1 Type1秽浇,Name2 Type2,...)

嵌套的數(shù)據(jù)結(jié)構(gòu)就像一個(gè)嵌套的表甚负。嵌套數(shù)據(jù)結(jié)構(gòu)的參數(shù) - 列名和類(lèi)型 - 與在CREATE查詢(xún)中的指定方式相同重慢。每個(gè)表的行可以對(duì)應(yīng)于嵌套數(shù)據(jù)結(jié)構(gòu)中的任意數(shù)量的行欠拾。

例如:

CREATE TABLE test.visits

(

CounterID UInt32,

StartDate Date,

Sign Int8,

IsNew UInt8,

VisitID UInt64,

UserID UInt64,

...

Goals Nested

(

ID UInt32,

Serial UInt32,

EventTime DateTime,

Price Int64,

OrderID String,

CurrencyID UInt32

),

...

) ENGINE = CollapsingMergeTree(StartDate, intHash32(UserID), (CounterID, StartDate, intHash32(UserID), VisitID), 8192, Sign)

此示例聲明了“目標(biāo)”嵌套數(shù)據(jù)結(jié)構(gòu)母廷,其中包含有關(guān)轉(zhuǎn)換的數(shù)據(jù)(達(dá)到的目標(biāo))赐纱。“訪問(wèn)”表中的每一行可以對(duì)應(yīng)于零或任意數(shù)量的轉(zhuǎn)換碰辅。

只支持一個(gè)嵌套級(jí)別懂昂。

在大多數(shù)情況下介时,使用嵌套數(shù)據(jù)結(jié)構(gòu)時(shí)没宾,會(huì)指定其各個(gè)列。為此沸柔,列名用點(diǎn)分隔循衰。這些列組成一個(gè)匹配類(lèi)型的數(shù)組。單個(gè)嵌套數(shù)據(jù)結(jié)構(gòu)的所有列數(shù)組具有相同的長(zhǎng)度褐澎。

例如:

SELECT

Goals.ID,

Goals.EventTime

FROM test.visits

WHERE CounterID = 101500 AND length(Goals.ID) < 5

LIMIT 10

┌─Goals.ID───────────────────────┬─Goals.EventTime──────────────────────────────────┐

│ [1073752,591325,591325]? ? ? ? │ ['2014-03-17 16:38:10','2014-03-17 16:38:48','2014-03-17 16:42:27']? ? ? ? ? ? ? ? ? ? ? │

│ [1073752]? ? ? ? ? ? ? ? ? ? ? │ ['2014-03-17 00:28:25']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ [1073752]? ? ? ? ? ? ? ? ? ? ? │ ['2014-03-17 10:46:20']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ [1073752,591325,591325,591325] │ ['2014-03-17 13:59:20','2014-03-17 22:17:55','2014-03-17 22:18:07','2014-03-17 22:18:51'] │

│ []? ? ? ? ? ? ? ? ? ? ? ? ? ? │ []? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ [1073752,591325,591325]? ? ? ? │ ['2014-03-17 11:37:06','2014-03-17 14:07:47','2014-03-17 14:36:21']? ? ? ? ? ? ? ? ? ? ? │

│ []? ? ? ? ? ? ? ? ? ? ? ? ? ? │ []? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ []? ? ? ? ? ? ? ? ? ? ? ? ? ? │ []? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ [591325,1073752]? ? ? ? ? ? ? │ ['2014-03-17 00:46:05','2014-03-17 00:46:05']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? │

│ [1073752,591325,591325,591325] │ ['2014-03-17 13:28:33','2014-03-17 13:30:26','2014-03-17 18:51:21','2014-03-17 18:51:45'] │

└────────────────────────────────┴───────────────────────────────────────────┘

將嵌套數(shù)據(jù)結(jié)構(gòu)視為一組長(zhǎng)度相同的多列數(shù)組是最容易的会钝。

SELECT查詢(xún)可以指定整個(gè)嵌套數(shù)據(jù)結(jié)構(gòu)的名稱(chēng)而不是單個(gè)列的唯一位置是ARRAY JOIN子句。有關(guān)更多信息,請(qǐng)參見(jiàn)“ARRAY JOIN子句”迁酸。例如:

SELECT

Goal.ID,

Goal.EventTime

FROM test.visits

ARRAY JOIN Goals AS Goal

WHERE CounterID = 101500 AND length(Goals.ID) < 5

LIMIT 10

┌─Goal.ID─┬──────Goal.EventTime─┐

│ 1073752 │ 2014-03-17 16:38:10 │

│? 591325 │ 2014-03-17 16:38:48 │

│? 591325 │ 2014-03-17 16:42:27 │

│ 1073752 │ 2014-03-17 00:28:25 │

│ 1073752 │ 2014-03-17 10:46:20 │

│ 1073752 │ 2014-03-17 13:59:20 │

│? 591325 │ 2014-03-17 22:17:55 │

│? 591325 │ 2014-03-17 22:18:07 │

│? 591325 │ 2014-03-17 22:18:51 │

│ 1073752 │ 2014-03-17 11:37:06 │

└─────────┴─────────────────────┘

您不能對(duì)整個(gè)嵌套數(shù)據(jù)結(jié)構(gòu)執(zhí)行SELECT先鱼。您只能明確列出屬于其中的單個(gè)列。

對(duì)于INSERT查詢(xún)奸鬓,應(yīng)該單獨(dú)傳遞嵌套數(shù)據(jù)結(jié)構(gòu)的所有組件列數(shù)組(就像它們是單獨(dú)的列數(shù)組一樣)焙畔。在插入期間,系統(tǒng)檢查它們具有相同的長(zhǎng)度串远。

對(duì)于DESCRIBE查詢(xún)宏多,嵌套數(shù)據(jù)結(jié)構(gòu)中的列以相同的方式單獨(dú)列出。

對(duì)于嵌套數(shù)據(jù)結(jié)構(gòu)中的元素澡罚,ALTER查詢(xún)非常有限伸但。

AggregateFunction(name,types_of_arguments ...)

集合函數(shù)的中間狀態(tài)留搔。要得到它更胖,使用具有“-State”后綴的聚合函數(shù)。有關(guān)更多信息隔显,請(qǐng)參閱“AggregatingMergeTree”函喉。

特殊的數(shù)據(jù)類(lèi)型

特殊數(shù)據(jù)類(lèi)型值不能保存到表中或輸出到結(jié)果中,而是用作運(yùn)行查詢(xún)的中間結(jié)果荣月。

集合

用于IN表達(dá)式的右半部分管呵。

表達(dá)式

用于表示高階函數(shù)中的lambda表達(dá)式。

布爾值

布爾值沒(méi)有單獨(dú)的類(lèi)型哺窄。他們使用UInt8類(lèi)型捐下,限制為值0或1。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萌业,一起剝皮案震驚了整個(gè)濱河市坷襟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌生年,老刑警劉巖婴程,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抱婉,居然都是意外死亡档叔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)蒸绩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衙四,“玉大人,你說(shuō)我怎么就攤上這事患亿〈福” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惦界。 經(jīng)常有香客問(wèn)我挑格,道長(zhǎng),這世上最難降的妖魔是什么沾歪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任恕齐,我火速辦了婚禮,結(jié)果婚禮上瞬逊,老公的妹妹穿的比我還像新娘显歧。我一直安慰自己,他們只是感情好确镊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布士骤。 她就那樣靜靜地躺著,像睡著了一般蕾域。 火紅的嫁衣襯著肌膚如雪拷肌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天旨巷,我揣著相機(jī)與錄音巨缘,去河邊找鬼。 笑死采呐,一個(gè)胖子當(dāng)著我的面吹牛若锁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斧吐,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼又固,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了煤率?” 一聲冷哼從身側(cè)響起仰冠,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝶糯,沒(méi)想到半個(gè)月后洋只,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昼捍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年识虚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端三。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舷礼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出郊闯,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布团赁,位于F島的核電站育拨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欢摄。R本人自食惡果不足惜熬丧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怀挠。 院中可真熱鬧析蝴,春花似錦、人聲如沸绿淋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吞滞。三九已至佑菩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裁赠,已是汗流浹背殿漠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佩捞,地道東北人绞幌。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像一忱,于是被迫代替她去往敵國(guó)和親啊奄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 11,007評(píng)論 6 13
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,304評(píng)論 25 707
  • 1.添加圖片: 2.文字 3.按鈕 4.屏幕分布
    冰西瓜大郎閱讀 392評(píng)論 0 0
  • 雷雁雄8月1日總結(jié):今天中午接待廠商領(lǐng)導(dǎo)掀潮,聊了很多現(xiàn)在市場(chǎng)存在的情況菇夸,也對(duì)下一步市場(chǎng)做了規(guī)劃;下午和朋友去談合作事...
    雷雁雄閱讀 95評(píng)論 0 0
  • 肖佩云 一朵玫瑰十分美好 它站在河的對(duì)岸 絢麗又凋零 一杯咖啡熱氣騰騰 它隔著時(shí)光之河 真實(shí)又虛幻 一封情書(shū)情意綿...
    肖佩云閱讀 563評(píng)論 0 3