ClickHouse学习笔记之数据类型

背景

安装好ClickHouse后,我们从其数据类型开始学习

整型

整型类型、是否有符号和取值范围如下表所示:
在这里插入图片描述
其中有符号整型取值范围为[-2^n-1, 2^(n-1)-1],无符号整型取值范围为[0, 2^(n-1)],n取值范围为{8, 16, 32 ,64}

浮点型

Float32和Float64

布尔型

无,可用整型表示

精度保持浮点数

有Decima32(n)、Decimal64(n)和Decimal128(n)三种类型,最大位数分别为9、18和38,其中n表示小数部分位数。
比如用这三种类型表示123321.1234567,Decimal32(3)、Decimal64(3)和Decimal128(3)就都是123321.123。

字符串

可变长度字符串String和固定长度为N的字符串FixedString(N),前者长度任意,后者长度固定为N(可传入),不够则在末尾加入空字节,超出则报错。

枚举类型

有Enum8和Enum16两种类型,用以保存字符串和8位或16位有符号整数的的对应关系。
比如创建一个a对应1,b对应2的表,其中x列存有枚举类型:

scentos :) create table t_enum (x Enum8('a'=1, 'b'=2)) engine = TinyLog;

其中的x列只能存储枚举类型中列举的字符串:

scentos :) insert into t_enum values ('a'), ('b'), ('b');

如果存其他没有枚举出来的字符串,就会抛出异常:

scentos :) insert into t_enum values ('ac');

INSERT INTO t_enum FORMAT Values

Query id: f9fddc87-f21a-4c63-a6e8-2d0510e00961

Exception on client:
Code: 36. DB::Exception: Unknown element 'ac' for enum: While executing ValuesBlockInputFormat: data for INSERT was parsed from query. (BAD_ARGUMENTS)

scentos :)

如果要看到某个枚举列对应的数值,必须将其值转换成定义时对应的整数类型:

scentos :) select cast(x, 'Int8') from t_enum;

SELECT cast(x, 'Int8')
FROM t_enum

Query id: 4690987b-fe53-4e37-b437-4a57f8790377

Connecting to database default at localhost:9000 as user default.
Connected to ClickHouse server version 21.11.5 revision 54450.

┌─CAST(x, 'Int8')─┐
│               1 │
│               2 │
│               2 │
└─────────────────┘

3 rows in set. Elapsed: 0.003 sec.

scentos :)

时间类型

有三种时间类型,如下表所示:
在这里插入图片描述

数组类型

Array(T):由类型T组成的数组,T可以是任何类型,包括数组类型,但不推荐存储多维数组。

创建数组可以用array函数:

scentos :) select array(1, -2) as x, toTypeName(x);

SELECT
    [1, -2] AS x,
    toTypeName(x)

Query id: 043c2e1e-1b12-4c0d-bba9-9ab1513e2a73

┌─x──────┬─toTypeName(array(1, -2))─┐
│ [1,-2] │ Array(Int16)             │
└────────┴──────────────────────────┘

1 rows in set. Elapsed: 0.003 sec.

也可以用中括号:

scentos :) select [1, 2] as x, toTypeName(x);

SELECT
    [1, 2] AS x,
    toTypeName(x)

Query id: 89c7dda8-d335-4af2-b6af-b8977dc6e686

┌─x─────┬─toTypeName([1, 2])─┐
│ [1,2] │ Array(UInt8)       │
└───────┴────────────────────┘

1 rows in set. Elapsed: 0.001 sec.

更多数据类型可参见官网文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值