文章目录
- 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数据分区的基本操作的全部内容,更多相关一内容请搜索靠谱客的其他文章。
发表评论 取消回复