1. 程式人生 > 其它 >ClickHouse 資料庫語法

ClickHouse 資料庫語法

1. 建立資料庫CREATE DATABASE

語法:CREATE DATABASE [IF NOTEXISTS] db_name

如果資料庫db_name已經存在,則不會建立新的db_name資料庫。

2. 建立表CREATE TABLE

語法:

CREATE TABLE [IF NOT EXISTS][db.]table_name [ON CLUSTER cluster]

(name1 [type1] [DEFAULT|MATERIALIZED|ALIASexpr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...) ENGINE = engine

在指定的‘db’資料庫中建立一個名為’name’的表,如果查詢中沒有資料庫’db’,則預設使用當前選擇的資料庫作為’db’。後面的‘()’括號中的內容為表結構及引擎宣告。

其中:DEFAULT expr – 預設值,如果INSERT中不包含指定的列,那麼將通過表示式計算它的預設值並填充它;

MATERIALIZED expr – 物化表示式,被該表示式指定的列不能被INSERT,因為它總是被計算出來的,對於INSERT而言,不需要考慮這些列。 另外,在SELECT查詢中如果包含星號,此列不會被查詢;

ALIAS expr – 別名,這樣的列不會儲存在表中。它的值不能夠通過INSERT寫入,同時使用SELECT查詢星號時,這些列也不會被用來替換星號,但是它們可以顯示的用於SELECT中,在這種情況下,在查詢分析中別名將被替換。

三種方式建立表:

1) 直接建立

語法:CREATE TABLE t1(id UInt16,name String) ENGINE=TinyLog

例如:create table t1(id UInt8,name String,address String)engine=MergeTree order by id

2)建立一個與其他表具有相同結構的表

語法:CREATE TABLE [IF NOT EXISTS] [db.]table_name AS[db2.]name2 [ENGINE = engine]

例如:create table t2 as t1 engine=MergeTree order by id

可以對其指定不同的表引擎宣告。如果沒有表引擎宣告,則建立的表將與db2.name2使用相同的表引擎。

3)使用指定的引擎建立一個與SELECT子句的結果具有相同結構的表,並使用SELECT子句的結果填充它

語法:CREATE TABLE [IF NOTEXISTS] [db.]table_name ENGINE = engine AS SELECT ...

例如:create table t3engine=TinyLog as select * from t1

3. 插入資料INSERT

語法:INSERT INTO [db.]table[(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), …

例如:insert into t1 (id,name,address) values(1,'aa','addr1'),(2,'bb','addr2')

也可以使用SELECT結果插入資料,語法:INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...

例如:insert into t2 select *from t1

4. 增加表的列ALTER…ADD

語法:ALTER TABLE [db].name [ONCLUSTER cluster] ADD COLUMN ...

例如:alter table t1 add columnage Int8增加age列型別為Int8

5. 修改表的列ALTER…MODIFY

語法:ALTERTABLE [db].name [ON CLUSTER cluster] MODIFY COLUMN ...

例如:alter table t1 modify

column age String修改age列型別為String

6. 刪除列ALTER…DROP

語法:ALTERTABLE [db].name [ON CLUSTER cluster] DROP COLUMN ...

例如:alter table t1 drop columnage刪除age列

7. 列印資料庫/表列表SHOW

列印資料庫列表語法:SHOUW DATABASES

打印表列表語法:SHOW TABLES

例如:show tables

8. 查看錶結構DESCRIBLE

語法:DESC|DESCRIBETABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

例如:desc t1

9. 刪除表

語法:DROP [TEMPORARY] TABLE [IF

EXISTS] [db.]name [ON CLUSTER cluster]

例如:drop table t2




原文連結:https://www.jianshu.com/p/5ee63674a798