摘要 資料庫 ClickHouse DDL

2021-10-17 02:14:22 字數 3264 閱讀 8769

create database [if not exists] db_name [on cluster cluster];
create table [if not exists] [db.]table_name on cluster cluster

( name1 [type1] [default|materialized|alias expr1],

name2 [type2] [default|materialized|alias expr2],

...index index_name1 expr1 type type1(...) granularity value1,

index index_name2 expr2 type type2(...) granularity value2

) engine = engine_name()

[partition by expr]

[order by expr]

[primary key expr]

[sample by expr]

[settings name=value, ...];

選項描述:

create table ontime_local on cluster default

( year uint16,

quarter uint8,

month uint8,

dayofmonth uint8,

dayofweek uint8,

flightdate date,

flightnum string,

div5wheelsoff string,

div5tailnum string

)engine = replicatedmergetree(

'/clickhouse/tables/ontime_local/',

'')partition by toyyyymm(flightdate)

primary key (inthash32(flightdate))

order by (inthash32(flightdate),flightnum)

sample by inthash32(flightdate)

settings index_granularity= 8192 ;

create table  [db.]table_name  on cluster default

as db.local_table_name engine = distributed(, , [, sharding_key])

--建立分布式表

create table ontime_distributed on cluster default

as db_name.ontime_local

engine = distributed(default, db_name, ontime_local, rand());

create table [if not exists] [db.]table_name on cluster default as [db.]name2 [engine = engine];
create table t2 on cluster default as db1.t1;
建立乙個與select子句的結果有相同結構的表

engine是需要明確指定的

create table [if not exists] [db.]table_name on cluster default engine = engine as select ...
create table t2 on cluster default engine =mergetree() as select * from db1.t1 where id<100;
create temporary table [if not exists] table_name on cluster default 

( name1 [type1] [default|materialized|alias expr1],

name2 [type2] [default|materialized|alias expr2],

...)

通過temporary 關鍵字表示臨時表。大多數情況下,臨時表不是手動建立的,只有在分布式查詢處理中使用(global) in時為外部資料建立。

create [materialized] view [if not exists] [db.]table_name [to[db.]name] on cluster default [engine = engine] [populate] as select ...
有materialized關鍵字表示是物化檢視,否則為普通檢視。

create view view_1 on cluster default as select a,b,c,d from db1.t1;

select a, b, c from view_1 ;

select a, b, c from (select a,b,c from db1.t1);

物化檢視儲存的資料是由相應的select查詢轉換得來的。目前物化檢視的工作原理:當將資料寫入到物化檢視中select子句所指定的表時,插入的資料會通過select子句查詢進行轉換並將最終結果插入到檢視中。

在建立物化檢視時,必須指定表的引擎- 將會使用這個表引擎儲存資料。

如果建立物化檢視時指定了populate子句,則在建立時將該錶的資料插入到物化檢視中。就像使用create table ... as select ...一樣。否則,物化檢視只會包含在物化檢視建立後的新寫入的資料。

不推薦使用populate,因為在檢視建立期間寫入的資料將不會寫入其中

當乙個select子句包含distinct, group by, order by, limit時,請注意,這些僅會在插入資料時在每個單獨的資料塊上執行。例如,如果在其中包含了group by,則只會在查詢期間進行聚合但聚合範圍僅限於單個批的寫入資料。資料不會進一步被聚合。但是當你使用一些其他資料聚合引擎時這是例外的,如:summingmergetree。

沒有單獨的刪除檢視的語法。如果要刪除檢視,請使用drop table。

喀秋莎資料庫 ClickHouse

換句話說,與行相關的所有值都物理地儲存在彼此旁邊。面向行的dbms的示例是mysql,postgres和ms sql server。在面向列的dbms中,資料儲存如下 這些示例僅顯示資料的排列順序。不同列的值分別儲存,同一列的資料儲存在一起。面向列的dbms的示例 vertica,paraccel ...

Clickhouse資料庫引擎

clickhouse支援的表引擎官網只給了三種 ordinary mysql lazy,clickhouse原理解析與應用實踐 一書中給了五種 ordinary dictionary memory mysql lazy 建立資料庫指定資料庫引擎語法 create database x engine ...

clickhouse 列式儲存資料庫介紹

clickhouse介紹 俄羅斯最大的搜尋公司yandex,在clickhouse的配置檔案中我們也會看到yandex的影子。相對行式資料庫,像mysql oracle sqlserver等都是行式儲存,是把同一行的資料放到相鄰同一資料塊種,而列式儲存是把同一列的資料放到相鄰同一資料塊種,這樣在進行...