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的数据表相关知识,包括:数据表定义、临时表、分区表还有数据表的基本操作(修改、删除、清空等操作)

相关推荐
Hello.Reader15 分钟前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
简佐义的博客1 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法1 小时前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡
snoopyfly~2 小时前
Ubuntu 24.04 LTS 服务器配置:安装 JDK、Nginx、Redis。
java·服务器·ubuntu
Me4神秘3 小时前
Linux国产与国外进度对垒
linux·服务器·安全
老纪的技术唠嗑局4 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
阿里云大数据AI技术4 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
牛奶咖啡135 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
weixin_437398215 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
m0_623955666 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle