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

Clickhouse基本语法

1、建库
CREATE DATABASE [IF NOT EXISTS] db_name [ENGINE=engine];

数据库目前一共支持5种引擎:

  • Ordinary: 默认引擎,在此数据库里可以使用任意类型的表引擎。
  • Dictionary: 字典引擎,此类数据库会自动为所有数据字典创建他们的数据表。
  • Memory: 内存引擎,此类数据库里的表只会停留在内存中,不涉及磁盘操作,服务重启数据会被清除。
  • Lazy:日志引擎,此类数据库里的表只能使用Log系列的表引擎。
  • MySQL: MySQL引擎,此类数据库会自动拉取MySQL中的表,并为他们创建MySQL表引擎的数据表
create database if not exists testDb engine=Ordinary;
2、表

常规定义方法:

CREATE TABLE [IF NOT EXISTS] [db_name].tb_name ( name1 [type] [Default|Materialized|Alias expr], name2 [type] [Default|Materialized|Alias expr], .... ) ENGINE=engine

复制其他表结构:这种方式支持在不同数据库之间复制表结构

CREATE TABLE [IF NOT EXISTS] [db_name2].tb_name2 AS [db_name1].tb_name1 ENGINE=engine

通过SELECT子句形式创建:

CREATE TABLE [IF NOT EXISTS] [db_name].tb_name ENGINE=engine AS SELECT...

其他

DROP TABL [IF EXISTS] [db_name].tb_name; SHOW CREATE TABLE tb_name; DESCRIBE TABLE tb_name; DESC tb_name;
默认值表达式

表字段支持三种默认值表达式定义方法:DEFAULT、MATERIALIZED、ALIAS

无论哪种表达式,表字段一旦被定义默认值,它便不再强制要求定义数据类型,因为clickhouse会根据默认值进行类型判断。如果同时定义了表字段的类型和默认值表达式,则以明确定义的数据类型为主

create table test( a UInt16, b default 123, c String default b )engine=TinyLog; insert into test(a) values(1); insert into test(a,c) values(2,111); select a,b,c,toTypeName(b),toTypeName(c) from test;

b字段没有定义数据类型,默认值是整形123;c字段定义数据类型,且默认值等于b字段

三种默认值表达式的区别:

  • 数据写入时,只有DEFAULT类型的字段可以出现在INSERT语句中,而MATERIALIZED和ALIAS都不能显示赋值,只能依靠计算取值。
  • 数据查询时,只有DEFAULT类型的字段可以通过SELECT * 返回,而MATERIALIZED和ALIAS类型的字段不会出现在SELECT * 的结果集中。
  • 数据存储时,只有DEFAULT和MATERIALIZED类型的字段才支持持久化,而ALIAS类型的字段不支持,它的取值总是依靠计算产生
表的基本操作

只有Merge、MergeTree和Distributed三类表引擎支持ALTER操作

//添加字段 ALTER TABLE tb_name ADD COLUMN [IF NOT EXISTS] name [TYPE] [DEFAULT_EXPR] [AFTER name_after]; //修改数据类型 ALTER TABLE tb_name MODIFY COLUMN [IF EXISTS] name [TYPE] [DEFAULT_EXPR]; //修改备注 ALTER TABLE tb_name COMMENT COLUMN [IF EXISTS] name '****' //删除字段 ALTER TABLE tb_name DROP COLUMN [IF EXISTS] name //移动表:RENAME TABLE 只能在同一个服务节点内 RENAME TABLE [db_name01.]tb_name01 TO [db_name02.]tb_name02, [db_name11.]tb_name11 TO [db_name12.]tb_name12, ... //清空表 TRUNCATE TABLE [IF EXISTS] [db_name.]tb_name;
分区表

只有MergeTree家族的表引擎才支持表分区,使用PARTITION BY 指定分区键

create table if not exists test1( id UInt8, message String, etime Date )engine=MergeTree partition by toYYYYMM(etime) order by id

数据

INSERT INTO test1(id, message, etime) VALUES(1,'A','2021-02-24'),(2,'B','2021-02-24'),(3,'C','2021-01-23'),(4,'D','2021-01-23');
select * from test1

通过system.parts系统表,查看表分区的状态:

select table,partition,path from system.parts where database ='testDb' and table='test1'

删除指定分区:

ALTER TABLE tb_name DROP PARTITION partition_expr;

复制分区数据

ALTER TABLE tb_name1 REPLACE PARTITION partition_expr FROM tb_name2;

clickhouse支持将A表分区的数据复制到B表。可以相互复制的表需要满足:

  • 两张表需要有相同的分区键
  • 表结构完全相同

重置分区数据:

ALTER TABLE tb_name CLEAR COLUMN column_naem IN PARTITION partition_expr; //卸载分区 ALTER TABLE tb_name DETACH PARTITION partition_expr; //装载分区 ALTER TABLE tb_name ATTACH PARTITION partition_expr;

分区被卸载后,物理目录并没有被删除而是转移到当前数据目录的detached子目录下。而装载分区则是反向操作。一旦分区被转移到detached子目录,就代表其脱离clickhouse的管理,clickhouse并不会主动清理这些文件,除非我们手动删除或者重新装载

数据的删除与修改

Clickhouse提供了DELETE和UPDATE的能力,这类操作被称为Mutation查询,它可以看做是ALTER语句的变种。Mutation虽然能实现DELETE和UPDATE,但不能用通常意义上的DELTE和UPDATE来理解:Mutation是种很重的操作,更适用于批量数据的删除修改;其次不支持事物,语句一旦被提交就立刻对现有数据产生影响,无法回滚;最后,Mutation是一个异步执行的过程,语句提交就立即返回。

// ALTER TABLE [db_name.]tb_name DELETE WHERE fileter_expr; //UPDATE支持在一条语句中同时修改多个字段,但分区键和主键不能作为被修改的字段 ALTER TABLE [db_name.]tb_name UPDATE column1 = expr1, column2 = expr2, ... WHERE fileter_expr;
http://www.jsqmd.com/news/1406041/

相关文章:

  • 把Revit模型搬上网页有多难?一文看懂Revit2GLTF的glTF导出全流程
  • 2027届单招集训选哪里?成都竞元武侯校区,小班教学助力公办上岸 - 成都竞元单招
  • 2026实测好用!亲子乐园票务核销一体系统全推荐 - 小富子呀
  • 2026低碳环保论文辅导,绿色发展专题研究打磨 - 艾德思Editsprings
  • Godot 逆向工程完整实战指南:用 gdsdecomp 免费恢复丢失源码的 PCK 项目
  • RocketMQ Dashboard安装
  • 2026年:酒泉车间洗地机联系电话机器操作简单上手快,保洁师傅人人爱-净驰环保科技 - 行业甄选汇
  • 5分钟装好 BepInEx:手把手游戏插件框架安装与配置全攻略
  • 2026博士论文学术争议处理,客观辩证分析问题 - 艾德思Editsprings
  • 2026新手开店必备,简单好用的门店系统推荐 - 南溪村的小陈子
  • 开源游戏资源编辑器 Harepacker-resurrected 实战指南:从 .wz 解包到地图制作一条龙
  • 2026洛阳房屋漏水维修避坑指南|正规修缮与乱象对比,少花冤枉钱 - 筑宅安
  • 深度解析NVIDIA-Nemotron-3.5-Lightning-30B-A3B-mxfp8:Mamba-2与注意力MoE混合架构如何协同工作
  • 2026年青海口碑最好的旅行社**,游客亲测,纯玩零差评正规品牌推荐 - 跟我去旅游
  • MCQTSS_QQMusic 完整实战指南:QQ音乐解析、歌单批量下载与MV获取全攻略
  • 武汉全封闭高三全日制集训 襄五学校 2026 招生简章发布仅面向社会考生 - 荆楚笔记
  • 在Windows电脑上免费安装安卓APK应用,不用模拟器的三个理由
  • 盐城汽车后市场服务GEO服务商怎么选?2026年本地代理加盟靠谱推荐 - 小随科技
  • 一站式在线PPT制作工具:PPTist,免安装做PPT还能AI生成,新手30分钟出片
  • Godot逆向工程完整指南:用GDRE Tools把PCK一键还原成可编辑项目
  • 2026徐州房屋漏水维修避坑指南|正规修缮与乱象对比,少花冤枉钱​ - 筑宅安
  • 英雄联盟战绩查询工具怎么选?Seraphine 从安装到玩转 BP 的几步走指南
  • QClaw以混元驱动的个人知识库架构
  • 三分钟上手的QQ音乐下载工具:把喜欢的声音真正留下来
  • 图片转3D模型零门槛:ImageToSTL 从照片到可打印STL文件的完整上手指南
  • 2026年向上走科技酒水配送小程序系统
  • 零基础学摄影,先买相机还是先学技术?很多人第一步就走反了 - 橡果教育Acorn
  • 2026年8月呼和浩特防水补漏实地测评|同城屋顶外墙卫生间防渗施工服务指南 - 超人防水
  • 2026常州房屋漏水维修避坑指南|正规修缮与乱象对比,少花冤枉钱 - 筑宅安
  • Audacity AI插件实战指南:免费本地完成音乐分离、降噪与语音转文字