我是靠谱客的博主 优雅毛豆,这篇文章主要介绍一 clickhouse DDL查询1 数据库1.1 建库1.2 删除数据库, 查看数据库2 建表2.1 传统方法2.2 从已存在的表中只复制表结构2.3 从已存在的表中复制表结构和数据3 默认表达式4 临时表5 分区表6 视图7 表的操作8数据分区的基本操作,现在分享给大家,希望可以做个参考。

文章目录

  • 1 数据库
  • 1.1 建库
  • 1.2 删除数据库, 查看数据库
  • 2 建表
  • 2.1 传统方法
  • 2.2 从已存在的表中只复制表结构
  • 2.3 从已存在的表中复制表结构和数据
  • 3 默认表达式
  • 4 临时表
  • 5 分区表
  • 6 视图
    • 6.1 普通视图
    • 6.2 物化视图
  • 7 表的操作
    • 7.1 增加字段
    • 7.2 修改数据类型
    • 7.3 删除已有字段
  • 8数据分区的基本操作
    • 8.1 删除指定分区
    • 8.2 复制分区数据
    • 8.3 重置分区
    • 8.4 卸载于装载分区

1 数据库

1.1 建库

create database if not exists db_test [ENGINE = engine];

[ENGINE = engine] 代表的是数据库引擎,有5种:
(1) ordinary(默认):可以使用任意类型的表引擎

(2) dictionary:字典引擎,会为所有数据字典创建数据表

(3) memory:内存引擎,断点消失

(4) lazy: 日志引擎

(5) mysql : mysql引擎,会自动拉取远端mysql中的数据并创建mysql表引擎的数据表

数据库的数据会以目录的方式存放在data目录(默认为 /var/lib/clickhouse/data)
还有一个用于恢复的sql文件(默认为 /var/lib/clickhouse/metadata)

1.2 删除数据库, 查看数据库

drop database if exists db_test;
show databases;

2 建表

2.1 传统方法

create table  if not exists db_name (
    name1 [type] [default|materized|alias expr],
    name2 [type] [default|materized|alias expr]
) ENGINE=engine; 

2.2 从已存在的表中只复制表结构

create table  if not exists tablename1 as tablename2 [ENGINE=engine];

2.3 从已存在的表中复制表结构和数据

create table  if not exists tablename1 ENGINE=engine as select * from tablename2;

3 默认表达式

name1 [type] [default|materized|alias expr],

默认表达式的定义有三种方式
(1) default: 可以出现在insert,可以通过select * 返回查询,支持持久化
(2) materized: 不可以出现在insert,不可以通过select * 返回查询,支持持久化
(3) alias: 不可以出现在insert,不可以通过select * 返回查询,不支持持久化

如果定义了默认值,不强求定义数据类型,会根据默认值推断出来类型.

create table mytable1(
    id String,
    c1 default 1000,
    c2 String default c1
) engine = TinyLog;

insert into mytable1(id) values('A000') ;

select c1,c2,toTypeName(c1),toTypeName(c2) from mytable1;

在这里插入图片描述
c1 会根据默认值推断出来,但c2有明确指出来类型所以用指明的类型.

可以通过alter 语句修改默认值

alter table mytable1 modify column c1 default 10001;

4 临时表

5 分区表

create table partition_v1(
	....
)ENGINE = MergeTree()
PARTITION BY toYYYYMM(EvenTime)
ORDER BY ID

6 视图

视图分两种:普通视图和物化视图,物化视图有独立的存储,而普通的视图只是一层简单的查询代理.

6.1 普通视图

create view if not exists view_name as select ...

6.2 物化视图

create view if not exists db_test.view_mytable2 [ENGINE=engine] POPULATE AS select 

使用 POPULATE 修饰符会将原表的数据一并写入视图.

7 表的操作

7.1 增加字段

alter table testcol_v1 add column if not exists os String default 'wo';

7.2 修改数据类型

alter table tablename modify column name type;
alter table tablename modify column name String;

7.3 删除已有字段

alter table tablename drop column columnname

该列的数据也会被删除

8数据分区的基本操作

parts 系统表专门用来查询分区信息.

8.1 删除指定分区

alter table tablename drop partition partition_name

8.2 复制分区数据

将A表的分区复制到B表:
条件:
1 两张表有相同的分区键
2 两张表的结结构相同

alter table B replace partition partition_name fron A

8.3 重置分区

alter table tablename clean column column_name in partition partition_name

8.4 卸载于装载分区

卸载分区会把数据移动到detached子目录下
装载是相反的过程.
在detached中的数据系统不会自动清除.

卸载:

alter table tablename detach partition partition_name

装载:

alter table tablename attach partition partition_name

最后

以上就是优雅毛豆最近收集整理的关于一 clickhouse DDL查询1 数据库1.1 建库1.2 删除数据库, 查看数据库2 建表2.1 传统方法2.2 从已存在的表中只复制表结构2.3 从已存在的表中复制表结构和数据3 默认表达式4 临时表5 分区表6 视图7 表的操作8数据分区的基本操作的全部内容,更多相关内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部