美文网首页数据分析
clickhouse入门教程,基础命令

clickhouse入门教程,基础命令

作者: FyK_21f8 | 来源:发表于2021-03-09 22:17 被阅读0次

客户端基本使用

clickhouse 客户端通过clickhouse-client执行

1.1 登录客户端

clickhouse-client --host localhost --port 9000 --user default  --password 123456 --multiline

host : 指定ip,可省略使用默认值localhost,可缩写为h
port : 指定端口号,可省略
user : 登录用户,省缺值为default,可缩写为u
password : 登录密码
multiline : 允许终端执行多行命令,可缩写m

1.2 不登录客户端直接执行查询

# 直接查询
clickhouse --password 123456 --query "show databases;"

# 执行多行查询 --multiquery
clickhouse-client --password 123456 --multiquery --query "select * from system.clusters; show databases;"

# 将查询结果导出csv文件
clickhouse-client --password 123456 --query "select * from system.clusters limit 1" >/tmp/result.csv

1.3 查看是数据库

show databases;

1.4 创建数据库

语法: CREATE DATABASE [IF NOT EXISTS] DB_NAME

create database if not exists test;

IF NOT EXISTS如果存在则不创建

# 使用某个数据库
use test;

1.5 建表

语法: CREATE TABLE [IF NOT EXISTS][db.]table_name [ON CLUSTER cluster]
(name1 [type1], name2 [type2] ,...) ENGINE = engine

IF NOT EXISTS 如果表存在则不创建
db 要在那个数据库创建表
table_name 表名称
ON CLUSTER cluster 在集群中创建表,省却则只在当前节点创建表
(name type, ...) 表结构
engine 指定使用的表引擎

create table if not exists test.t_order
(
  id Int64 COMMENT '订单id', 
  datetime DateTime COMMENT '订单日期',
  name String COMMENT '商品名称',
  price Decimal32(2) COMMENT '商品价格',
  user_id Int64 COMMENT '用户id'
) engine = MergeTree 
partition by toYYYYMM(datetime)
order by id 

partition by toYYYYMM(datetime) 使用datetime 字段按照月进行分区
order by id 使用id进行排序

1.6 插入数据

insert into t_order values (1, '2021-03-09 21:42:00', '大力丸', 999.99, 202003090001)

1.7 查询数据

select * from t_order order by id desc;

查询结果

┌─id─┬────────────datetime─┬─name───┬────price─┬──────user_id─┐
│  2 │ 2021-03-09 21:45:00 │ 小力丸 │ 99999.99 │ 202004180005 │
└────┴─────────────────────┴────────┴──────────┴──────────────┘
┌─id─┬────────────datetime─┬─name───┬──price─┬──────user_id─┐
│  1 │ 2021-03-09 21:42:00 │ 大力丸 │ 999.99 │ 202003090001 │
└────┴─────────────────────┴────────┴────────┴──────────────┘

1.8 增加表的列

语法: ALTER TABLE [db].name [ONCLUSTER cluster] ADD COLUMN name type
name 增加的列名
type 列的属性类型

alter table t_order add column addr String;

查看表结构变化

┌─id─┬────────────datetime─┬─name───┬────price─┬──────user_id─┬─addr─┐
│  2 │ 2021-03-09 21:45:00 │ 小力丸 │ 99999.99 │ 202004180005 │      │
└────┴─────────────────────┴────────┴──────────┴──────────────┴──────┘
┌─id─┬────────────datetime─┬─name───┬──price─┬──────user_id─┬─addr─┐
│  1 │ 2021-03-09 21:42:00 │ 大力丸 │ 999.99 │ 202003090001 │      │
└────┴─────────────────────┴────────┴────────┴──────────────┴──────┘

1.9 修改列

语法: ALTER TABLE [db].name [ON CLUSTER cluster] MODIFY COLUMN name type
name 修改的的列名
type 要修改成的属性类型

# 将user_id这一列的属性修改为String
alter table t_order modify column user_id String;

1.10 删除列

语法: ALTER TABLE [db].name [ON CLUSTER cluster] DROP COLUMN name
name 要删除的列名

alter table t_order drop column addr;

删除后的表结构

┌─id─┬────────────datetime─┬─name───┬────price─┬─user_id──────┐
│  2 │ 2021-03-09 21:45:00 │ 小力丸 │ 99999.99 │ 202004180005 │
└────┴─────────────────────┴────────┴──────────┴──────────────┘
┌─id─┬────────────datetime─┬─name───┬──price─┬─user_id──────┐
│  1 │ 2021-03-09 21:42:00 │ 大力丸 │ 999.99 │ 202003090001 │
└────┴─────────────────────┴────────┴────────┴──────────────┘

1.11 删除数据(不建议的操作)

alter table t_order delete where id = 2;

删除后的结果

┌─id─┬────────────datetime─┬─name───┬──price─┬─user_id──────┐
│  1 │ 2021-03-09 21:42:00 │ 大力丸 │ 999.99 │ 202003090001 │
└────┴─────────────────────┴────────┴────────┴──────────────┘

1.12 修改数据(不建议)

alter table t_order update price = 0.99 where id = 1;

修改后的结果

┌─id─┬────────────datetime─┬─name───┬─price─┬─user_id──────┐
│  1 │ 2021-03-09 21:42:00 │ 大力丸 │  0.99 │ 202003090001 │
└────┴─────────────────────┴────────┴───────┴──────────────┘

1.13 删除分区

alter table t_order drop partition '202103';

建表的时候使用了partition by toYYYYMM(datetime)数据是按照月进行分区的,那么刚才插入的数据都在这个分区,删除了整个分区的数据,则就没数据撩,一般用于定时删除数据

1.14 查看表结构

desc t_order;

结果

┌─name─────┬─type──────────┬─default_type─┬─default_expression─┬─comment──┬─codec_expression─┬─ttl_expression─┐
│ id       │ Int64         │              │                    │ 订单id   │                  │                │
│ datetime │ DateTime      │              │                    │ 订单日期 │                  │                │
│ name     │ String        │              │                    │ 商品名称 │                  │                │
│ price    │ Decimal(9, 2) │              │                    │ 商品价格 │                  │                │
│ user_id  │ String        │              │                    │ 用户id   │                  │                │
└──────────┴───────────────┴──────────────┴────────────────────┴──────────┴──────────────────┴────────────────┘

1.15 删除表

drop table t_order;

1.16 查看表

drop table t_order;

总体来说,clickhouse语法几乎贴近于mysql,入手还是很简单的,但是对于一些高级特性,比如各个表引擎的特性,表引擎的配合使用,用于数据分析等还没有深入学习.

相关文章

网友评论

    本文标题:clickhouse入门教程,基础命令

    本文链接:https://www.haomeiwen.com/subject/tqgbqltx.html