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 运算符
少, < 运算符
大于, > 运算符
小于等于, <= 运算符
大于等于, >= 运算符