ClickHouse的基本操作说明

说明

文章内容包括数据库管理、表操作及查询等核心功能

创建数据库

-- 默认引擎(Atomic)

CREATE DATABASE IF NOT EXISTS test_db;

-- MySQL引擎(映射外部MySQL数据库)

CREATE DATABASE mysql_db ENGINE = MySQL('host:port', 'mysql_db_name', 'user', 'password');

CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'test', 'test');

use mysql_db;

show tables;

select * from de_dict;

desc de_dict;

删除数据库

DROP DATABASE test_db;

切换数据库

USE test_db;

本地表(MergeTree引擎)

CREATE TABLE user_logs (

    log_id UInt64,

    user_id UInt32,

    event_time DateTime,

    metric Float32

) ENGINE = MergeTree()

PARTITION BY toYYYYMM(event_time)  -- 按年月分区

ORDER BY (user_id, event_time)     -- 主键及排序键

SETTINGS index_granularity = 8192;  -- 索引粒度

分布式表

-- 本地表(集群各节点创建)

CREATE TABLE test.user_event ON CLUSTER data_cluster (

    uid String,

    dt Date

) ENGINE = MergeTree() PARTITION BY dt ORDER BY uid;

-- 分布式表(逻辑视图)

CREATE TABLE test.user_event_distributed

ENGINE = Distributed('data_cluster', 'test', 'user_event', rand()); -- 随机分片

插入数据

INSERT INTO user_logs VALUES

(1, 101, '2023-10-01 10:00:00', 1.5),

(2, 102, '2023-10-01 11:00:00', 2.8);

查询数据

-- 基础查询

SELECT * FROM user_logs WHERE user_id = 101;

-- 聚合统计

SELECT user_id, SUM(metric) FROM user_logs GROUP BY user_id;

-- 排序与分页

SELECT * FROM user_logs ORDER BY event_time DESC LIMIT 10;

更新/删除数据

-- 删除分区

ALTER TABLE user_logs DROP PARTITION '202310';

-- 删除条件数据

ALTER TABLE user_logs DELETE WHERE user_id = 101;

表结构修改

-- 添加列

ALTER TABLE user_logs ADD COLUMN ip String AFTER user_id;

-- 删除列

ALTER TABLE user_logs DROP COLUMN metric;

-- 修改列类型

ALTER TABLE user_logs MODIFY COLUMN ip IPv4;

其他实用操作

SHOW DATABASES;          -- 查看所有数据库

SHOW TABLES FROM test_db; -- 查看库中所有表

DESC user_logs;           -- 查看表结构

SELECT * FROM system.clusters;  --查看已配置的集群信息

数据导入/导出

-- 导出到CSV

SELECT * FROM user_logs INTO OUTFILE 'data.csv' FORMAT CSV;

-- 从文件导入

INSERT INTO user_logs FROM INFILE 'data.csv' FORMAT CSV;

性能优化建议

批量插入数据(每次插入至少数千行);

避免使用SELECT *,明确指定查询列;

合理使用分区和索引减少扫描范围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码先觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值