Clickhouse的使用以及常见命令

一、添加clickhouse

1.下载驱动程序


2.进行连接

3.显示所有的架构,包括系统架构

二、命令语句

1.展示所有的数据库

show databases;

2.创建一个数据库叫bigdata32(if not exists表示如果该库不存在就进行创建)

create database if not exists bigdata32;

3.创建表

--创建数据库表,里面有id,name,age,gender,clazz.FixedString(8)表示固定字符串长度
create table if not exists bigdata32.stu1(
    `id` Int32,
    `name` String,
    `age` Int8,
    `gender` FixedString(8),
    `clazz` String
)ENGINE = TinyLog;

4.向表中添加字段

insert into bigdata32.stu1 values (1001,'江川',18,'男','大数据32期') ;

insert into bigdata32.stu1 values (1002,'张三',20,'男','大数据32期');

5.clickhouse的数据类型

a.整数类型:

--clickhouse中的数据类型跟mysql中的不一样,Int8表示[-128 : 127],还有Int16,Int32等等
--具体可以查看官方网址:https://clickhouse.com/docs/zh/sql-reference/data-types/int-uint

b.字符串类型

String:可变字符串 varchar
FixedString(长度):固定长度的字符串,参数是字节,效率比String更高 char

c.日期类型:

Date 年-月-日

Date32 年-月-日

DateTime 年-月-日 时-分-秒

DateTime64 年-月-日 时-分-秒.毫秒

案例:

建表语句:

create table date_test (date1 Date,date2 Date32,date3 DateTime,date4 DateTime64) ENGINE = TinyLog;

插入语句:

前两个将时间不变,后面一个会增加时分秒单位,最后一个会在前一个的基础上增加毫秒单位
insert into date_test values ('2023-11-21','2023-11-21','2023-11-21','2023-11-21');
将时间戳转换成日期,前面两个会按天来进行转换,倒数第二个会按秒来进行转换,而最后一个才会按毫秒来进行转换
insert into date_test values (1691825618123,1691825618123,1691825618123,1691825618123); //2023-08-12 15:33:38

6.查看数据的类型toTypeName

select id,name,toTypeName(age) as type_age,gender,clazz from bigdata32.stu1;

7.向表中添加一个字段类型为:数组

CREATE TABLE IF NOT EXISTS bigdata32.stu3
(
    `id`     Int32,
    `name`   String,
    `age`    Nullable(Int32),
    `gender` FixedString(8),
    `clazz`  String,
    `likes`  Array(String)
) ENGINE = TinyLog;
--添加数据
insert into bigdata32.stu3
values (1003, '李四', 21, '男', '大数据32期', array('唱', '跳', 'rap'));

三、Mysql数据引擎

1.TinyLog

最简单的表引擎,用于将数据存储在磁盘上。每列都存储在单独的压缩文件中。写入时,数据将附加到文件末尾。
像之前的创建的表都是TinyLog数据引擎

2.StripeLog

该引擎是将所有的列存储在一个文件中,对每次Insert请求,都将数据块追加在表文件的末尾,逐列写入
ClickHouse 为每张表写入以下文件:
data.bin — 数据文件。
index.mrk — 带标记的文件。标记包含了已插入的每个数据块中每列的偏移量

3.MergeTree(合并树家族)

Clickhouse 中最强大的表引擎当属 MergeTree (合并树)引擎及该系列(*MergeTree)中的其他引擎。

1.创建一个表

create table bigdata32.goods_orders
(
id String,
uname String,
goods_name String,
price Int64,
date Date32
) ENGINE = MergeTree() order by date PARTITION BY date;

2.添加数据

insert into bigdata32.goods_orders
values ('1001', '李刚', 'oppo手机', 7000, '2024-10-24'),
       ('1002', '江川', '机械革命电脑', 10000, '2024-10-22'),
       ('1003', '钱志强', 'iphone14', 5000, '2024-10-24'),
       ('1004', '吴问强', 'AI吸尘器', 17000, '2024-10-22');

insert into bigdata32.goods_orders
values ('1001', '祝帅', 'vivo x200 pro', 5299, '2024-10-24'),
       ('1002', '李世博', '科睿显示屏', 10000, '2024-10-22'),
       ('1003', '杨珊珊', 'iphone16 pro max', 5000, '2024-10-24'),
       ('1004', '王亮亮', '华为三折叠', 17000, '2024-10-22');

四、常用函数

4.1 算术函数

对于所有算术函数,结果类型为结果适合的最小数值类型(如果存在这样的类型)。最小数值类型是根据数值的位数,是否有符号以及是否是浮点类型而同时进行的。如果没有足够的位,则采用最高位类型。简单理解:会自动的根据我们的数值大小,来选用最适合的数据类型存储。

4.2 比较函数

比较函数始终返回0或1(UInt8)。
等于,a=b和a==b 运算符
不等于,a!=b和a<>b 运算符
少, < 运算符
大于, > 运算符
小于等于, <= 运算符
大于等于, >= 运算符

五、开窗over()

-- 开窗 over()
-- select  xxx(...)  over(...)
-- 开窗不会改变数据条数,新增一列开窗的列

-- 统计每个部门薪资前2的员工
-- rank(), dense_rank(), row_number() 排序开窗函数
select
       t1.emp_name,
       t1.job,
       t1.mgr_no,
       t1.hire_date,
       t1.salary,
       t1.commission,
       t1.dept_no,
       t1.rn
from
(
    select emp_no,
       emp_name,
       job,
       mgr_no,
       hire_date,
       salary,
       commission,
       dept_no,
       row_number() over (partition by dept_no order by salary desc) as rn
from bigdata32.employees
) t1 where t1.rn<3;

![](https://img2024.cnblogs.com/blog/3524755/202410/3524755-20241024225535803-946976609.png)

select emp_no,
       emp_name,
       job,
       mgr_no,
       hire_date,
       salary,
       commission,
       dept_no,
       row_number() over (partition by dept_no order by salary desc) as rn,
       rank() over (partition by dept_no order by salary desc) as rn2,
       dense_rank() over (partition by dept_no order by salary desc) as rn3
from bigdata32.employees;

![](https://img2024.cnblogs.com/blog/3524755/202410/3524755-20241024225611226-1489064454.png)

posted @   你的镁偷走了我的锌  阅读(964)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示