详解 ClickHouse 的 SQL 操作

传统关系型数据库(以 MySQL 为例)的 SQL 语句,ClickHouse 基本都支持

一、插入

--语法:
insert into table_name values(xxxxxx),(yyyyyyy),...;

insert into table_name select xxxxx from table_name2 where yyyyy;

二、更新和删除

作为 OLAP 数据库,ClickHouse 本身不太擅长更新和删除操作,它提供了 Delete 和 Update 的能力,不同于 OLTP 数据库的更新和删除操作,这类操作被称为 Mutation 查询,它可以看做 Alter 的一种。

--更新
alter table table_name update column=value where condition;

--删除
alter table table_name delete where condition;
  • Mutation 语句是一种很“重”的操作,而且不支持事务
  • ClickHouse 更新和删除的本质操作是将原有的分区重新创建一份并把更新或删除后的新数据写入,然后将原有分区打上逻辑上的失效标记,此时原有数据依然存储在磁盘,直到触发分区合并的时候,才会真正删除旧数据释放磁盘空间
  • 实际生产中不建议对 ClickHouse 的表数据进行更新和删除

三、查询

1. 基本查询

select columns from table_name where conditions group by column order by column;

--1. 支持子查询
select columns from (select columns from table_name where conditions);

--2. 支持 CTE(Common Table Expression 公用表表达式 with 子句)
with table_name2 as (
	select columns from table_name where conditions
)

select * from table_name2

2. 关联查询

支持各种 JOIN,但是 JOIN 操作无法使用缓存,所以即使是两次相同的 JOIN 语句,ClickHouse 也会视为两条新 SQL

3. 基本函数

--条件判断
if(condition, then, else) --条件值为非0则 then 否则 else
multiIf(cond1, then1, cond2, then2, ...., else) --类似于 case when then else end 函数

4. 多维分析函数

--with rollup:上卷
group by a,b with rollup --统计的维度组合为 (), a, (a,b)


--with cube:多维分析
group by a,b with cube --统计的维度组合为 (), a, b, (a,b)

--with totals:总计
group by a,b with totals --统计的维度组合为 (), (a,b)

四、alter 操作

--新增字段
alter table table_name add column col_name col_type after col_name1;

--修改字段类型
alter table table_name modify column col_name new_col_type;

--删除字段
alter table table_name drop column col_name;

五、导出数据

更多支持格式参照:https://clickhouse.tech/docs/en/interfaces/formats/

#将查询出的数据导出为 csv 文件
clickhouse-client --query "select * from t_order_mt where create_time='2020-06-01 12:00:00'" --format CSVWithNames > /opt/module/data/rs1.csv
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClickHouse是一个开源的列式数据库管理系统,专为大规模数据分析和实时查询而设计。它支持高性能的并行查询和数据压缩,适用于处理大量数据的场景。 在使用ClickHouse进行SQL查询时,可以按照以下步骤进行操作: 1. 创建表:使用CREATE TABLE语句创建一个新的表,可以指定表的名称、列的名称和数据类型,以及表的引擎类型。例如,可以使用以下命令创建一个名为table_from_file的表,并指定其列和引擎类型: \[1\] 2. 导入数据:使用INSERT INTO语句将数据导入到表中。可以使用INFILE关键字指定数据文件的路径和格式。例如,可以使用以下命令将数据从input.csv文件导入到table_from_file表中: \[1\] 3. 执行查询:使用SELECT语句从表中检索数据。可以使用FORMAT关键字指定查询结果的格式。例如,可以使用以下命令从table_from_file表中检索数据并以紧凑的格式显示: \[1\] 除了基本的查询操作ClickHouse还支持许多其他功能,如聚合函数、分组、排序、过滤等。可以根据具体的需求使用相应的SQL语句来实现这些功能。 总结起来,使用ClickHouse进行SQL查询的一般步骤包括创建表、导入数据和执行查询。通过灵活的SQL语句和高性能的查询引擎,ClickHouse可以有效地处理大规模数据分析和实时查询的需求。 #### 引用[.reference_title] - *1* *2* *3* [ClickHouse SQL 操作语句详解](https://blog.csdn.net/leesinbad/article/details/129127536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值