Clickhouse系列之连接工具连接、数据类型和数据库

基本操作

一、使用连接工具连接

上一篇介绍了clickhouse的命令行登录,今天来介绍一下使用连接工具是如何登录的。

首先下载dbeaver连接工具,然后直接打开软件,如下图操作。


如果发现8123不通,先排查防火墙是否关闭或者是否已添加8123端口,如果不是防火墙的问题,那么要查看/etc/clickhouse-server/config.xml文件里的<listen_host></listen_host>标签的值是否为0.0.0.0,如果不是则要修改为0.0.0.0,然后重启clickhosue服务:systemctl restart clickhouse-server。如果上述两个都正常是能够正常连接的,正常的端口如下图:

二、数据类型

1、数字类型

Int

Float

Decimal

如果要求更高精度的数值运算,则需要使用定点数。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数。可以通过两种形式声明定点:简写方式有Decimal32(S)、Decimal64(S)、Decimal128(S)三种,原生方式为Decimal(P,S),其中:

·P代表精度,决定总位数(整数部分+小数部分),取值范围是1~38;

·S代表规模,决定小数位数,取值范围是0~P。

2、字符串类型

字符串类型可以细分为String、FixedString和UUID三类。

String

字符串由String定义,长度不限。因此在使用String的时候无须声明大小。它完全代替了传统意义上数据库的Varchar、Text、Clob和Blob等字符类型。

FixedString

FixedString类型和传统意义上的Char类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过FixedString(N)声明,其中N表示字符串长度。

UUID

UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12。如果一个UUID类型的字段在写入数据时没有被赋值,则会依照格式使用0填充,例如:

00000000-0000-0000-0000-000000000000

3、时间类型

时间类型分为DateTime、DateTime64和Date三类。ClickHouse目前没有时间戳类型。时间类型最高的精度是秒,也就是说,如果需要处理毫秒、微秒等大于秒分辨率的时间,则只能借助UInt类型实现。

DateTime

DateTime类型包含时、分、秒信息,精确到秒,支持使用字符串形式写入,例如:

2019-06-22 00:00:00

DateTime64

DateTime64可以记录亚秒,它在DateTime之上增加了精度的设置,例如:

2019-06-22 00:00:00.00

Date

Date类型不包含具体的时间信息,只精确到天,它同样也支持字符串形式写入,例如:

2019-06-22

4、复合类型

除了基础数据类型之外,ClickHouse还提供了数组、枚举等复合类型。

Array

在同一个数组内可以包含多种数据类型,例如数组1,2.0是可行的。但各类型之间必须兼容,例如数组1,'2'则会报错。在定义表字段时,数组需要指定明确的元素类型,例如:

CREATE TABLE Array_TEST (

c1 Array(String)

) engine = Memory

Enum

ClickHouse支持枚举类型,这是一种在定义常量时经常会使用的数据类型,ClickHouse提供了Enum8和Enum16两种枚举类型。

CREATE TABLE Enum_TEST (

c1 Enum8('ready' = 1, 'start' = 2, 'success' = 3, 'error' = 4)

) ENGINE = Memory;

在定义枚举集合的时候,有几点需要注意。首先,Key和Value是不允许重复的,要保证唯一性。其次,Key和Value的值都不能为Null,但Key允许是空字符串。在写入枚举数据的时候,只会用到Key字符串部分,例如:

INSERT INTO Enum_TEST VALUES('ready');

数据在写入的过程中,会对照枚举集合项的内容逐一检查。如果Key字符串不在集合范围内则会抛出异常

5、特殊类型

Nullable

准确来说,Nullable并不能算是一种独立的数据类型,它更像是一种辅助的修饰符,需要与基础数据类型一起搭配使用。

CREATE TABLE Null_TEST (

c1 String,

c2 Nullable(UInt8)

) ENGINE = Memory;

三、数据库

创建数据库:

CREATE DATABASE IF NOT EXISTS db_name

查看数据库:

SHOW DATABASES

┌─name───┐

│ DB_TEST │

│ default │

│ system │

└───────┘

切换数据库:

use db_name

删除数据库:

DROP DATABASE IF EXISTS db_name

如果你有什么意见或建议,请在评论区发表评论!如果能帮助到你学习新知识,欢迎点赞、收藏+关注

下集预告,Clickhouse的数据表相关知识,包括:数据表定义、临时表、分区表还有数据表的基本操作(修改、删除、清空等操作)

相关推荐
做运维的阿瑞21 分钟前
mysql数据库视图笔记:创建、修改、删除与适用场景
数据库·笔记·mysql
Seraphina3629 分钟前
DVWA(SQL Injection-High,XSS Reflected-Medium,XSS Stored-Medium)
数据库·经验分享·sql·网络安全·xss
@Mike@30 分钟前
12-数据库学习笔记(五种连接算法)
数据库·笔记·学习
程序猿老A37 分钟前
GPU云服务器怎么安装AI
运维·服务器·人工智能
Omics Pro43 分钟前
之江实验室NAR|虚拟细胞3阶段训练范式
数据库·人工智能·算法·机器学习·自然语言处理
Ruiery1 小时前
Linux 6.6内核 CPU 深度解析(八):percpu 变量 — 每个 CPU 一份数据,无锁访问
linux·运维·服务器
龙亘川1 小时前
探索智慧文化服务:建设初衷、整体架构、技术支撑、发展现状与实践影响
大数据·数据库·架构
风早爽太1 小时前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
java1234_小锋1 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据库基本操作
数据库·mysql
其实防守也摸鱼1 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化