ClickHouse--03--数据类型

news2025/1/20 1:46:28

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 数据类型
    • 1. Int
    • 2.Float
        • toFloat32(...) 用来将字符串转换成 Float32 类型的函数
        • toFloat64(...) 用来将字符串转换成 Float64 类型的函数
    • 3.Decimal
        • toDecimal32(value,S):将字符串 value 转换为 Decimal32 类型,小数点后有 S 位。
        • toTypeName(字段):获取字段的数据类型函数。
    • 4.String
    • 5.FixedString
        • toFixedString(value,N):将字符串转换为 N 位长度,N 不能小于 value 字符串实际长度。
    • 6.UUID
        • generateUUIDv4()随机生成一个 32 位的 UUID。
    • 7.Date
        • now() : 获取当前天日期,返回格式:yyyy-MM-dd HH:mm:ss
        • toDate(value) : 将字符串转成 Date,只支持 yyyy-MM-dd 格式。
    • 8.DateTime
        • toDateTime(DateTimeValue) : 将 字 符 串 转 成 DateTime , 只 支 持 yyyy-MM-dd HH:MI:SS。
        • toDateTime(DateTimeValue,时区) :同上,支持将数据转换为对应时区时间。
    • 9.DateTime64
        • toDateTime64(timeStr,precision):将字符串转成 DateTime64,精度为 precision。支持 yyyy-MM-dd HH:MI:SS.SSS 时间格式。
        • toDateTime64(timeStr,precision,timezone):同上,只是可以将时间转换为对应时区时间。
    • 10.布尔类型
    • 11.枚举类型 Enum
    • 12.Nullable
    • 13 .数组类型 Array(T)
    • 14.Tuple 类型
    • 15 .嵌套类型 Nested
    • 16.Domain


数据类型

ClickHouse 提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。我们可以在 system.data_type_families 表中检查数据类型名称以及是否区分大小写。这个表中存储了 ClickHouse 支持的所有数据类型。

在这里插入图片描述
下面介绍下常用的数据类型,ClickHouse 与 Mysql、Hive 中常用数据类型的对比图如下:
在这里插入图片描述

1. Int

  • ClickHouse 中整形分为 Int8、Int16、Int32、Int64 来表示整数不同的取值范围,其末尾数字正好代表占用字节的大小(8 位=1字节),整形又包含有符号整形和无符号整形,他们写法上的区别为无符号整形前面加“U”表示。

在这里插入图片描述
在这里插入图片描述

2.Float

  • 我们建议使用整数方式来存储数据,因为浮点类型数据计算可能导致四舍五入的误差。
    浮点类型包含单精度浮点数和双精度浮点数。
    在这里插入图片描述
  • Float32 从小数点后第 8 位起会发生数据溢出。

在这里插入图片描述

示例

toFloat32(…) 用来将字符串转换成 Float32 类型的函数
toFloat64(…) 用来将字符串转换成 Float64 类型的函数

在这里插入图片描述
在这里插入图片描述

3.Decimal

  • 有符号的定点数,可在加、减和乘法运算过程中保持精度。ClickHouse 提供了Decimal32、Decimal64、Decimal128、Decimal256 几种精度的定点数,支持几种写法:
    在这里插入图片描述
    在这里插入图片描述
    另外,Decimal 数据在进行四则运算时,精度(总位数)和规模(小数点位数)会发
    生变化,具体规则如下:
    在这里插入图片描述
    示例:
toDecimal32(value,S):将字符串 value 转换为 Decimal32 类型,小数点后有 S 位。
toTypeName(字段):获取字段的数据类型函数。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.String

  • 字符串可以是任意长度的。
  • 它可以包含任意的字节集,包含空字节
  • 因此,字符串类型可以代替其他 DBMSs 中的 VARCHAR、BLOB、CLOB 等类型。

5.FixedString

固定长度 N 的字符串(N 必须是严格的正自然数),一般在明确字符串长度的场景下使用,可以使用下面的语法对列声明为 FixedString 类型:
在这里插入图片描述

  • 当向 ClickHouse 中插入数据时,如果字符串包含的字节数少于 N ,将对字符串末尾进行空字节填充。如果字符串包含的字节数大于 N,将抛出 Too large value for FixedString(N)异常
  • 当做数据查询时,ClickHouse 不会删除字符串末尾的空字节。 如果使用 WHERE 子句,则须要手动添加空字节以匹配 FixedString 的值,新版本后期不需要手动添加。

示例:

toFixedString(value,N):将字符串转换为 N 位长度,N 不能小于 value 字符串实际长度。

在这里插入图片描述

在这里插入图片描述

6.UUID

UUID 是一种数据库常见的主键类型,在 ClickHouse 中直接把它作为一种数据类型。

  • UUID 共有 32 位,它的格式为 8-4-4-4-12
  • 如果在插入新记录时未指定 UUID 列值,则UUID 值将用 0 来填充(00000000-0000-0000-0000-000000000000)。
  • UUID 类型不支持算术运算、聚合函数 sum 和 avg

示例

generateUUIDv4()随机生成一个 32 位的 UUID。

在这里插入图片描述
在这里插入图片描述

7.Date

  • Date 只能精确到天,用两个字节存储,表示从 1970-01-01(无符号)到当前的日期 值。日期中没有存储时区信息,不能指定时区。

示例:

now() : 获取当前天日期,返回格式:yyyy-MM-dd HH:mm:ss
toDate(value) : 将字符串转成 Date,只支持 yyyy-MM-dd 格式。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.DateTime

DateTime 精确到秒,可以指定时区。

  • 用四个字节(无符号的)存储 Unix 时间戳。允许存储与日期类型相同的范围内的值。最小值为 0000-00-00 00:00:00,时间戳类型值精确到秒。
  • 时区使用启动客户端或服务器时的系统时区。默认情况下,客户端连接到服务的时候会 使用服务端时区。您可以通过启用客户端命令行选项–use_client_time_zone 来设 置使用客户端时区

示例:

toDateTime(DateTimeValue) : 将 字 符 串 转 成 DateTime , 只 支 持 yyyy-MM-dd HH:MI:SS。
toDateTime(DateTimeValue,时区) :同上,支持将数据转换为对应时区时间。

在这里插入图片描述
在这里插入图片描述

9.DateTime64

DateTime64 精确到毫秒和微秒,可以指定时区。在内部,此类型以 Int64 类型将数据存储。时间刻度的分辨率由 precision 参数确定。

  • 此外,DateTime64 类型可以像存储其他数据列一样存储时区信息,时区会影响 DateTime64 类型的值如何以文本格式显示,以及如何解析以字符串形式指定的时间数据 (‘2020-01-01 05:00:01.000’)。时区信息不存储在表的行中,而是存储在列的元数据中。
    在这里插入图片描述
    示例:
toDateTime64(timeStr,precision):将字符串转成 DateTime64,精度为 precision。支持 yyyy-MM-dd HH:MI:SS.SSS 时间格式。
toDateTime64(timeStr,precision,timezone):同上,只是可以将时间转换为对应时区时间。

在这里插入图片描述
在这里插入图片描述

10.布尔类型

  • ClickHouse 中没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0或 1。具体参照枚举类型。

11.枚举类型 Enum

枚举类型通常在定义常量时使用,ClickHouse 提供了 Enum8 和 Enum16 两种枚举类型。

  • Enum 保存’string’=integer 的对应关系。在 ClickHouse 中,尽管用户使用的是字符串常量,但所有含有 Enum数据类型的操作都是按照包含整数的值来执行。这在性能方面比使用 String 数据类型更有效。
  • Enum8 和 Enum16 分别对应’String’=Int8 和’String’=Int16,Enum8 类型的每个值范围是-128 … 127,Enum16 类型的每个值范围是-32768 … 32767,所有的字符串或者数字都必须是不一样的,允许存在空字符串,Enum 类型中数字可以是任意顺序,顺序并不重要。
  • 向 Enum 字段中插入值时,可以插入枚举的字符串值也可以插入枚举对应的 Int 值, 建议插入对应的字符串值,这样避免插入对应的 Int值不在 Enum 枚举集合中再次查询表 时报错。定义了枚举类型值之后,不能写入其他值的数据,写入的值不在枚举集合中就会抛 出异常。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

12.Nullable

  • Nullable 类 型 只 能 与 基 础 数 据 类 型 搭 配 使 用 , 表 示 某 个 类 型 的 值 可 以 为NULL,Nullable(Int8)表示可以存储Int8类型的值,没有值时存NULL。使用Nullable 需要注意:Nullable 类型的字段不能作为索引字段,尽量避免使用 Nullable 类型,因 为字段被定义为 Nullable 类型后会额外生成[Column].null.bin 文件保存 Null 值,增加开销,比普通列消耗更多的存储空间。
    在这里插入图片描述
    在这里插入图片描述

13 .数组类型 Array(T)

  • Array(T),由 T 类型元素组成的数组。T 可以是任意类型,包含数组类型。但不推 荐使用多维数组,ClickHouse 对多维数组的支持有限。例如,不能在 MergeTree 表中存储多维数组。
  • 数组的定义方式有两种:Array(T),[1,2,3… …],数组类型里面的元素必须具 有相同的数据类型,否则会报异常。另外,需要注意的是,数组元素中如果存在 Null 值, 则元素类型将变为 Nullable。
  • 从数组中查询获取值使用 xx[1|2… …],直接使用中括号获取值,下标从 1 开始
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

14.Tuple 类型

元组类型有 1~n 个元素组成,每个元素允许设置不同的数据类型,且彼此之间不要求兼容。与数组类似,元组也可以使用两种方式定义:tuple(1,‘hello’,12.34)或者直接写(1,‘hello’,45.67),元组中可以存储多种数据类型,但是要注意数据类型的顺序。
在这里插入图片描述
在这里插入图片描述

15 .嵌套类型 Nested

ClickHouse 支持嵌套数据类型(Nested),可以为一个表定义一个或者多个嵌套数据类型字段,但是每个嵌套字段只支持一级嵌套,即嵌套字段内不能继续使用嵌套类型。嵌套一般用来表示简单的级联关系,嵌套本质上是一个多维数组,嵌套类型中的每个数组的长度必须相同。目前,Nested 类型支持很局限,MergeTree 引擎中不支持 Nested 类型。
在这里插入图片描述
在这里插入图片描述

16.Domain

Domain 类型是特定实现的类型,目前支持 IPv4 和 IPv6 两类,本质上他们是对整形和字符串的进一步封装,IPv4 类型基于 UInt32 封装,IPv6 基于 FixedString(16)封装。

  • 出于便捷性的考量,例如:IPv4 类型支持格式检查,格式错误的 IP 无法被写入。出于性能的考量,IPv4 和 IPv6 相对于 String 更加紧凑,占用的空间更小,查询性能更快。
  • 在使用 Domain 时需要注意,虽然表面看起来与 String 一样,但是 Domain类型并不是字符串,也不支持隐式自动转换成字符串,如果需要返回 IP 的字符串形式,需要调用函数 IPv4NumToString()和IPv6NumToString()显式实现。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1447239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生介绍与容器的基本概念

云原生介绍 1、云原生的定义 云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。 2、云原生思想两个理论 第一个理论基础是:不可变基础设施。 第二个理论基础是:云应用编排理…

基于python深度学习的中文情感分析的系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Vue3高频知识点和写法

一 Vue插件 二 vue3项目创建 创建完成后npm install npm run dev 三 setup 一 响应式数据 setup函数是用来代替data和methods的写法的,在setup函数中声明的数据和函数,导出后可以在页面中使用。 但是暂时不是响应式数据,如果要响应式数据的…

备战蓝桥杯---动态规划(入门2)

今天主要介绍区间dp比较难的题: 下面是分析: 我们如果先固定点V0,那我们得去枚举两个点使它构成三角形,同时求目标值也比较难确定(起始与终止都带0),于是我们考虑固定边,我们固定v0…

【开源】SpringBoot框架开发考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

云原生容器化-4 Docker仓库

1.Docker仓库 1.1 Docker Hub docker仓库用于存放docker镜像,可以分为公用和私有两种。Docker Hub是全球公用的仓库,因服务器在国外,国内基本不可以;一般需要配置阿里、腾讯等加速器。公司内部而言,可以搭建私有的Do…

智能家居中可自行收集能量的无电池的无线设备

此图片来源于网络 1、背景 ZigBee是一种基于IEEE 802.15.4标准的低速短距离无线通信技术,用于创建个人区域网络。其名称来源于蜜蜂的八字舞,因为蜜蜂通过这种舞蹈来与同伴传递花粉的所在方位信息,从而构成了群体中的通信网络。ZigBee技术具…

【Linux】Kali Linux 系统安装详细教程(虚拟机)

目录 1.1 Kali linux简介 1.2 Kali Linux工具 1.3 VMware workstation和ESXi的区别 二、安装步骤 一、Kali概述 1.1 Kali linux简介 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最…

【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以打包成功,使用vite创建应用

1,视频地址: https://www.bilibili.com/video/BV1Ny421a7nA/ 【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以…

Linux第47步_安装支持linux的第三方库和mkimage工具

安装支持linux的第三方库和mkimage工具,做好移植前的准备工作。 编译linux内核之前,需要先在 ubuntu上安装“lzop库”和“libssl-dev库”,否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…

利用Cloudflare Workers实现网页状态监控

首先 Fork cf-workers-status-page 浏览器地址栏输入 https://deploy.workers.cloudflare.com/?urlhttps://github.com/$YourUserName/cf-workers-status-page 获取 Cloudflare 账户内的 Account ID 和 API Token 授权的 token 需要 workes 的编辑权限 在 Github actio…

【C语言】动态内存深入了解(一口气刨根问底学完系列,全乎,建议三连点赞收藏)

目录 1.动态内存分配的原因 2.动态内存函数的介绍 2.1malloc和free函数 2.2calloc函数 2.3realloc函数 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部…

程序员与电脑:不眠之夜的背后故事

在这个数字化飞速发展的时代,程序员和他们的电脑成了不可分割的伙伴。 如果你有机会深夜走过城市的某个角落,透过窗户瞥见那些亮着的电脑屏幕,你可能会好奇:这些电脑为什么总是开着的? 难道程序员们都有失眠症吗&…

代码随想录刷题笔记 DAY 25 | 组合问题 No.77 | 组合求和III No.216 | 电话号码的字母组合 No.17

文章目录 Day 2501. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 02. 组合求和III(No. 216)2.1 题目2.2 笔记2.3 代码 03. 电话号码的字母组合(No. 17)3.1 题目3.2 笔记3.3 代码3.4 补充 Day 25 01. 组合问…

大数据 - Spark系列《五》- Spark常用算子

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

在Ubuntu上部署Stable Video Diffusion动画制作

Stable Diffusion团队推出的开源模型Stable Video Diffusion,支持生成约3秒的视频,分辨率为5761024。通过测试视频展示了其令人瞩目的性能,SVD模型是一个生成图像到视频的扩散模型,通过对静止图像的条件化生成短视频。其特点主要包…

AWD-Test2

1.已知账号密码&#xff0c;可SSH连接进行代码审计。2.登录可万能密码进入&#xff0c;也可注册后登录。3.修改url参数&#xff0c;发现报错。确定为Linux系统4.写入一句话&#xff0c;并提交。&#xff08;也可以文件上传&#xff0c;这里采用简洁的方法&#xff09; <?p…

书生·浦语大模型第四课作业

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 1.安装 # 如果你是在 Int…

形态学操作之开操作与闭操作的python实现——数字图像处理

原理 图像处理中的开操作&#xff08;Opening&#xff09;和闭操作&#xff08;Closing&#xff09;是形态学&#xff08;Morphological&#xff09;操作的两个基本类型&#xff0c;它们都是基于膨胀&#xff08;Dilation&#xff09;和腐蚀&#xff08;Erosion&#xff09;操…

H12-821_31

31.下面是一台路由器的部分配置,关于该配置描述正确的是: A.源地址为1.1.1.1的数据包匹配第一条ACL语句rule 0,匹配规则为允许 B.源地址为1.1.1.3的数据包匹配第三条ACL语句rule 2,匹配规则为拒绝 C.源地址为1.1.1.4的数据包匹配第四条ACL语句rule 3,匹配规则为允许 D.源地址为…