当前位置: 首页 > news >正文

详解 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
http://www.lryc.cn/news/381996.html

相关文章:

  • WPF与Winform,你的选择是?
  • 基于SpringBoot的实习管理系统设计与实现
  • 编程用什么电脑不卡的:深度解析与推荐
  • 优先级队列模拟实现
  • 记一次服务器崩溃事件
  • 神经网络 #数据挖掘 #Python
  • 营销复盘秘籍,6步法让你的活动效果翻倍
  • Linux下命令行文件创建删除、目录创建删除
  • 数字排列问题
  • CentOS Linux 7系统中离线安装MySQL5.7步骤
  • XSS跨站攻击漏洞
  • PMP到底值不值得考?
  • redis面试总结
  • 大模型日报2024-06-24
  • 深入理解计算机系统 CSAPP 练习题7.4
  • 摘苹果-第13届蓝桥杯省赛Python真题精选
  • 开源项目推荐-vue2+element+axios 个人财务管理系统
  • 手机数据如何恢复?11 款最佳安卓手机恢复软件
  • 大语言模型千问2的web搭建(streamlit)
  • 守护生产车间安全:可燃气体报警器预警与检测的重要性
  • [创业之路-125] :制造业企业的必备管理神器-ERP-计算的资源管理与企业的资源管理的异同
  • TDengine Cloud 新增签约,这次是能源物联网平台
  • Kafka 最佳实践:构建高性能、可靠的数据管道
  • 进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证
  • http/2 二进制分帧层 (Binary Framing Layer)讲解
  • Mybatis分页查询,同时返回total
  • JDK17新增语法特征
  • 2748. 美丽下标对的数目(Rust暴力枚举)
  • Vue中双向数据绑定是如何实现的
  • 桌面云和云桌面的区别联系