基本操作
- 一、使用连接工具连接
- 二、数据类型
- 1、数字类型
- Int
- Float
- Decimal
- 2、字符串类型
- String
- FixedString
- UUID
- 3、时间类型
- DateTime
- DateTime64
- Date
- 4、复合类型
- Array
- Enum
- 5、特殊类型
- Nullable
- 三、数据库
一、使用连接工具连接
上一篇介绍了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的数据表相关知识,包括:数据表定义、临时表、分区表还有数据表的基本操作(修改、删除、清空等操作)