红泥小火炉


clickHouse(数据类型+数据库&数据表)

Nathaniel 2021-04-28 535浏览 0条评论
首页/正文
分享到: / / / /

数据类型

数据库&数据表

创建数据库语法同mysql语法;其中引擎部分支持5种引擎:

  • Ordinary:此数据库下可以使用任意类型的表引擎;
  • Dictionary:字典引擎;
  • Memory:内存引擎,用于存放临时数据,不会进行磁盘操作,当服务重启后数据会被清除;
  • Lazy:日志引擎,此类数据库下只能使用Log系列的表引擎;
  • MySQL:MySQL引擎,此类数据库下会自动拉取远端MySQL中的数据,并为它们创建MySQL表引擎的数据表。

创建表

常规定义方法,同mysql的建表语法;

复制其他表的结构:支持在不同的数据库之间复制表结构

CREATE TABLE [IF NOT EXISTS][db_name.]table_name AS [db_name2.] table_name2 [ENGINE=engine]

通过SELECT字句的形式创建:会将表结构和数据一并写入新表

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

删除表

DROP TABLE [IF EXISTS] [db_name.] table_name

默认值表达式

表字段支持三种默认值表达式的定义方法,分别是DEFAULT、MATERIALIZED和ALIAS。

在数据写入时,只有DEFAULT类型的字段可以出现在INSERT语句中。而MATERIALIZED和ALIAS都不能被显式赋值,它们只能依靠计算取值。

在数据查询时,只有DEFAULT类型的字段可以通过SELECT *返回。而MATERIALIZED和ALIAS类型的字段不会出现在SELECT *查询的返回结果集中。

在数据存储时,只有DEFAULT和MATERIALIZED类型的字段才支持持久化。如果使用的表引擎支持物理存储(例如TinyLog表引擎),那么这些列字段将会拥有物理存储。而ALIAS类型的字段不支持持久化,它的取值总是需要依靠计算产生,数据不会落到磁盘。

临时表

创建临时表的方法是在普通表的基础之上添加TEMPORARY关键字;

它的生命周期是会话绑定的,所以它只支持Memory表引擎,如果会话结束,数据表就会被销毁;

临时表不属于任何数据库,所以在它的建表语句中,既没有数据库参数也没有表引擎参数;

临时表的优先级是大于普通表的。当两张数据表名称相同的时候,会优先读取临时表的数据。

视图

ClickHouse拥有普通和物化两种视图,其中物化视图拥有独立的存储,而普通视图只是一层简单的查询代理;

CREATE VIEW [IF NOT EXISTS] [db.name.]view_name AS SELECT...

普通视图不存储数据,只是select查询映射,对查询性能不会有任何增强。

物化视图支持表引擎,数据保存形式由它的表引擎决定,物化视图源表写入新数据之后,物化视图也会同步更新。

POPULATE修饰符决定了物化视图的初始化策略:如果使用了POPULATE修饰符,那么在创建视图的过程中,会连带将源表中已存在的数据一并导入,如同执行了SELECT INTO一般;反之,如果不使用POPULATE修饰符,那么物化视图在创建之后是没有数据的,它只会同步在此之后被写入源表的数据。物化视图目前并不支持同步删除,如果在源表中删除了数据,物化视图的数据仍会保留。

数据表操作

追加新字段
ALTER TABLE 表名 ADD COLUMN 列名称 列类型 [AFTER|DEFAULT] 字段名称
修改数据类型

类型不兼容会修改失败

ALTER TABLE 表名 MODIFY COLUMN 列名称 列类型
修改备注
ALTER TABLE 表名 COMMENT COLUMN 列名称 '列字段备注'
删除已有字段
ALTER TABLE 表名 DROP COLUMN 列名称
移动数据表

如果表名称相同,数据库不同,则启动移动数据库的作用;如果数据库相同,则修改数据表的名称。

数据表移动的目标数据库和原始数据库必须处在同一个服务节点内,而不能是集群中的远程节点。

RENAME TABLE 表名 TO 另一个表名

分区基本操作

system_parts系统表用于查询数据表的分区信息。

删除指定分区
ALTER TABLE 表名 DROP PARTITION 分区表达式 
复制分区数据

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

ALTER TABLE 表名 REPLACE PARTITION 分区表达式 FROM 表名
重置分区数据
ALTER TABLE 表名 CLEAR COLUMN 列名 IN PARTITION 分区表达式
卸载与装载分区

用于分区数据的迁移和备份场景

ALTER TABLE 表名 DETACH PARTITION 分区表达式 -- 卸载
ALTER TABLE 表名 ATTACH PARTITION 分区表达式 -- 装载
最后修改:2021-04-28 16:44:04 © 著作权归作者所有
上一篇

评论列表

还没有人评论哦~赶快抢占沙发吧~

博客信息

  • 文章数目 12
  • 标签数目 7
  • 运行天数
  • 最后活动

广告

文章目录