clickhouse入門之基礎(chǔ)數(shù)據(jù)類型及數(shù)據(jù)表

數(shù)據(jù)類型

基礎(chǔ)類型

基礎(chǔ)類型只有三種 數(shù)值磷雇、字符串魄幕、時(shí)間

  1. 數(shù)值
    1.1 數(shù)值類型 int (用int8 int16 int32 int64 代表tinyint smallint int bigint) 分別占用 1 2 4 8字節(jié),無符號(hào)整數(shù)加前綴U表示偶妖。
    1.2 浮點(diǎn)數(shù) float (float32 float64 分別占用4 8字節(jié) 有效精度分別為7 16位)
    1.3 定點(diǎn)數(shù) decimal (decimal32(S) decimal64(S) decimal128(S) 表示 decimal(1~9, S) decimal(10~18, S) decimal(19~38, S) )

  2. 字符串
    2.1 String
    2.2 FixedString
    2.3 UUID (8-4-4-4-12)

  3. 時(shí)間
    3.1 DateTime 精確到秒
    3.2 DateTime64 精確到微秒
    3.3 Date 精確到天

復(fù)合類型

復(fù)合類型有四種,分別是數(shù)組政溃、元組趾访、枚舉、嵌套董虱。

  1. 數(shù)組Array 書寫方式array(T) 或者 [T]
  2. 元組Tuple 書寫方式tuple(T) 或者 (T)
  3. 枚舉Enum Key/Value形式 Enum8和Enum16分別表示(String:int)和(String:int16),枚舉類型K V不能重復(fù)且不能為null扼鞋,K可以為空字符串
  4. 嵌套Nested 每個(gè)字段的嵌套層級(jí)只支持一層 嵌套類型本質(zhì)是一種多維數(shù)組的結(jié)構(gòu) 嵌套表中的每個(gè)字段都是一個(gè)數(shù)組,且行與行之間長度無需對(duì)齊 但同一行數(shù)據(jù)內(nèi)的每個(gè)數(shù)組字段的長度必須相等

特殊類型

  1. Nullable 盡量避免愤诱,會(huì)使查詢和寫入性能變慢 [column].bin -> [column].null.bin
  2. Domian 域名類型分為IPv4和IPv6兩類

定義數(shù)據(jù)表

數(shù)據(jù)庫

CREATE DATABASE IF NOT EXISTS db_name [ENGINE = engine]
數(shù)據(jù)庫目前支持5種引擎
Ordinary 默認(rèn)引擎
Dictionary 字典引擎云头,此類數(shù)據(jù)庫會(huì)自動(dòng)為所有數(shù)據(jù)字典創(chuàng)建他們的數(shù)據(jù)表
Memory 內(nèi)存引擎,用于存放臨時(shí)數(shù)據(jù)淫半,此類數(shù)據(jù)庫下的數(shù)據(jù)表只會(huì)停留在內(nèi)存中溃槐,不會(huì)涉及任何磁盤操作,當(dāng)服務(wù)重啟后數(shù)據(jù)會(huì)被清掉
Lazy 日志引擎科吭,此類數(shù)據(jù)庫下只能使用Log系列的表引擎
MySQL MySQL引擎昏滴,此類數(shù)據(jù)庫下會(huì)自動(dòng)拉取遠(yuǎn)端MySQL中的數(shù)據(jù)猴鲫,并為他們創(chuàng)建MySQL表引擎的數(shù)據(jù)表

SHOW DATABASES                      #查看當(dāng)前的數(shù)據(jù)庫列表
USE db_name                         #切換數(shù)據(jù)庫   
SHOW TABLES                         #查詢可以查看當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)表列表
DROP DATABASES [IF EXISTS] db_name  #刪除數(shù)據(jù)庫

數(shù)據(jù)表

  1. 常規(guī)定義方式
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name (
    name1 [type] [DEFAULT|MATERIALIZED|ALTAS expr], 
    name2 [type] [DEFAULT|MATERIALIZED|ALTAS expr], ...
) ENGINE = engine
  1. 復(fù)制其他表結(jié)構(gòu)
CREATE TABLE [IF NOT EXISTS] [db_name1.]table_name AS [db_name2.]table_name2 [ENGINE = engine]
  1. 通過select子句的形式創(chuàng)建相應(yīng)的表結(jié)構(gòu),同時(shí)還會(huì)將select子句查詢的數(shù)據(jù)順帶寫入
CREATE TABLE IF NOT EXISTS table_name_new ENGINE = engine AS SELECT * FROM table_name_origin

默認(rèn)值表達(dá)式

支持三種默認(rèn)值表達(dá)式 DEFAULT|MATERIALIZED|ALTAS谣殊,無論使用哪一種形式拂共,表字段一旦被定義了默認(rèn)值便不再強(qiáng)制要求定義數(shù)據(jù)類型。

臨時(shí)表

CREATE TEMPORARY TABLE [IF NOT EXISTS] table_name (
    name1 [type] [DEFAULT|MATERIALIZED|ALTAS expr], 
    name2 [type] [DEFAULT|MATERIALIZED|ALTAS expr], ...
)

相比普通表姻几,臨時(shí)表生命周期是會(huì)話綁定的宜狐,只支持Memory表引擎,會(huì)話結(jié)束表就會(huì)被銷毀蛇捌。
臨時(shí)表不屬于任何數(shù)據(jù)庫肌厨。
臨時(shí)表與普通表重名時(shí),臨時(shí)表的優(yōu)先級(jí)是高于普通表的豁陆。

分區(qū)表

CREATE TABLE table_name (...) ENGINE=MergeTree() PARTITION BY ... ORDER BY ...  #建表
SELECT table,partition,path from system.parts WHERE table='table_name' #查詢數(shù)據(jù)表的分區(qū)狀態(tài)

視圖

  1. 普通視圖
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name AS SELECT ...

視圖不會(huì)存儲(chǔ)任何數(shù)據(jù)柑爸,它只是一層單純的SELECT查詢映射,對(duì)查詢性能不會(huì)有任何增強(qiáng)盒音。

  1. 物化視圖
CREATE [MATERIALIZED] VIEW [IF NOT EXISTS] [db.]table_name [TO[db.]name] [ENGINE=engin] [POPULATE] AS SELECT ...

物化視圖創(chuàng)建好后表鳍,如果源表被寫入新數(shù)據(jù),那么物化視圖也會(huì)同步更新祥诽。POPULATE修飾符決定了物化視圖的初始化策略譬圣,如果使用POPULATE修飾符,那么在創(chuàng)建視圖的過程中雄坪,會(huì)連帶將源表中已存在的數(shù)據(jù)一并導(dǎo)入厘熟,反正則沒有數(shù)據(jù)。物化視圖不支持同步刪除维哈,源表刪除后物化視圖數(shù)據(jù)仍會(huì)保留绳姨。使用SHOW TABLE查看數(shù)據(jù)表列表時(shí) .inner. 特殊前綴的表為物化視圖,可使用DROP TABLE刪除阔挠。

數(shù)據(jù)表的基本操作

追加新字段

ALTER TABLE tb_name ADD COLUMN [IF NOT EXISTS] name [type] [default_expr] [AFTER name_after]

修改數(shù)據(jù)類型

ALTER TABLE tb_name MODIFY COLUMN [IF EXISTS] name [type] [default_expr]

修改備注

ALTER TABLE tb_name COMMENT COLUMN [IF EXISTS] name 'some comment'

刪除已有字段

ALTER TABLE tb_name DROP COLUMN [IF EXISTS] name

移動(dòng)數(shù)據(jù)表

RENAME TABLE [db1.]table1 TO [db2.]table2 ...

清空數(shù)據(jù)表

TRUNCAT TABLE [IF EXISTS] [db.]table

數(shù)據(jù)分區(qū)的基本操作

查詢分區(qū)信息

SELECT partition_id,name,table,database FROM system.parts WHERE table='table_name'

刪除指定分區(qū)

ALTER TABLE tb_name DROP PARTITION partition_expr

復(fù)制分區(qū)數(shù)據(jù)

ALTER TABLE tb_b REPLACE PARTITION partition_expr FROM table_a

前提:兩張表需要擁有相同的分區(qū)鍵飘庄,表結(jié)構(gòu)完全相同。

重置分區(qū)數(shù)據(jù)

ALTER TABLE tb_name CLEAR COLUMN column_name IN PARTITION partition_expr

卸載與裝載分區(qū)

分區(qū)被卸載后物理數(shù)據(jù)并沒有刪除购撼,是被轉(zhuǎn)移到了當(dāng)前表目錄的detached子目錄下跪削。

ALTER TABLE tb_name DETACH PARTITION partition_expr #卸載
ALTER TABLE tb_name ATTACH PARTITION partition_expr #裝載

備份與還原分區(qū)

FREEZE FETCH

分布式DDL

CREATE ALTER DROP RENAME TRUNCAT 都支持分布式執(zhí)行。

CREATE TABLE tb ON CLUSTER cluster_name (...) ...

數(shù)據(jù)寫入

INSERT INTO [db.]table_name [(c1,c2, ...)] VALUES (v1,v2, ...) #values格式插入
INSERT INTO [db.]table_name [(c1,c2, ...)] FORMAT format_name data_set #使用指定格式
INSERT INTO [db.]table_name [(c1,c2, ...)] SELECT ... #使用SELECT插入

數(shù)據(jù)刪除與修改

DELETE UPDATE 是 Mutation語句的變種迂求,它是一種很[重]的操作碾盐,適用于批量數(shù)據(jù)的修改和刪除,一旦提交就會(huì)立刻對(duì)現(xiàn)有數(shù)據(jù)產(chǎn)生影響且不可回滾揩局,它是一個(gè)異步的后臺(tái)過程毫玖,語句提交后就會(huì)立刻返回,所以這并不代表具體邏輯已經(jīng)執(zhí)行完畢,具體進(jìn)度要通過system.mutations系統(tǒng)表來查詢孕豹。

ALTER TABLE [db.]tb DELETE WHERE filter_expr #刪除
ALTER TABLE [db.]tb UPDATE column1=expr1 [, ...] WHERE filter_expr #更新
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涩盾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子励背,更是在濱河造成了極大的恐慌春霍,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叶眉,死亡現(xiàn)場(chǎng)離奇詭異址儒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衅疙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門莲趣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饱溢,你說我怎么就攤上這事喧伞。” “怎么了绩郎?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵潘鲫,是天一觀的道長。 經(jīng)常有香客問我肋杖,道長溉仑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任状植,我火速辦了婚禮浊竟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘津畸。我一直安慰自己振定,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布洼畅。 她就那樣靜靜地躺著吩案,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帝簇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天靠益,我揣著相機(jī)與錄音丧肴,去河邊找鬼。 笑死胧后,一個(gè)胖子當(dāng)著我的面吹牛芋浮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纸巷,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼镇草!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘤旨,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤梯啤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后存哲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體因宇,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年祟偷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了察滑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡修肠,死狀恐怖贺辰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嵌施,我是刑警寧澤饲化,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站艰管,受9級(jí)特大地震影響滓侍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牲芋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一撩笆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缸浦,春花似錦夕冲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卜高,卻和暖如春弥姻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掺涛。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工庭敦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薪缆。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓秧廉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疼电,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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