ClickHouse数据类型详解

一、整型

1、Int类型

Int的长度可以是8、16、32、64比特。比特数代表了它能存储的整形数值范围。比如,Int8的范围是-128到127,Int16的范围是-32768到32767。

CREATE TABLE IF NOT EXISTS test_int (id Int32, value Int8) ENGINE = Memory;
INSERT INTO test_int (id, value) VALUES 
    (1, -128), (2, 0), (3, 127);

2、UInt类型

与Int类型相比,UInt类型并没有负数,因此它的范围是0到2^(n)-1,其中n是比特数。例如,UInt8的范围是0到255。

CREATE TABLE IF NOT EXISTS test_uint (id Int32, value UInt8) ENGINE = Memory;
INSERT INTO test_uint (id, value) VALUES 
    (1, 0), (2, 127), (3, 255);

二、浮点型

1、Float类型

Float类型是一种单精度浮点数,其长度为32比特。它能够存储大约6到7位的有效数字。

CREATE TABLE IF NOT EXISTS test_float (id Int32, value1 Float32, value2 Float32) ENGINE = Memory;
INSERT INTO test_float (id, value1, value2) VALUES 
    (1, 1.23456789, 1234567.89),
    (2, 1.23400001, 1234567.90),
    (3, 1.23456784, 1234566.89);

2、Double类型

Double类型是一种双精度浮点数,其长度为64比特,能够存储大约15到16位的有效数字。

CREATE TABLE IF NOT EXISTS test_double (id Int32, value1 Float, value2 Float64) ENGINE = Memory;
INSERT INTO test_double (id, value1, value2) VALUES 
    (1, 1.23456789012345, 1234567890.12345),
    (2, 1.234000000001, 1234567890.12346),
    (3, 1.2345678901234, 1234567889.12345);

三、日期和时间型

1、Date类型

Date类型存储日期,长度为16比特。它的取值范围为0000-01-01到9999-12-31。

CREATE TABLE IF NOT EXISTS test_date (id Int32, value Date) ENGINE = Memory;
INSERT INTO test_date (id, value) VALUES 
    (1, toDate('2020-01-01')), 
    (2, toDate('2021-12-31')), 
    (3, toDate('2022-02-01'));

2、DateTime类型

DateTime类型存储日期和时间,长度为32比特。它的取值范围为1970-01-01 00:00:00到2105-12-31 23:59:59。

CREATE TABLE IF NOT EXISTS test_datetime (id Int32, value DateTime) ENGINE = Memory;
INSERT INTO test_datetime (id, value) VALUES 
    (1, toDateTime('2020-01-01 12:30:00')), 
    (2, toDateTime('2021-12-31 23:59:59')), 
    (3, toDateTime('2022-02-01 01:30:30'));

四、字符串和二进制型

1、String类型

String类型存储字符串,长度不超过2^30字节。在ClickHouse中,String类型的底层是使用Variable-length encoding(可变长度编码)来实现的。

CREATE TABLE IF NOT EXISTS test_string (id Int32, value String) ENGINE = Memory;
INSERT INTO test_string (id, value) VALUES 
    (1, 'Hello, world!'), 
    (2, '中文测试'), 
    (3, '1234567890');

2、FixedString类型

FixedString类型是固定长度的字符串类型,长度在定义表时即可确定。因为长度是固定的,所以FixedString类型的存储比String类型的更紧凑。

CREATE TABLE IF NOT EXISTS test_fixedstring (id Int32, value FixedString(5)) ENGINE = Memory;
INSERT INTO test_fixedstring (id, value) VALUES 
    (1, 'Hello'), 
    (2, 'World'), 
    (3, '12345');

3、Tuple类型

Tuple类型用于存储具有不同类型的数据的元组。Tuple的长度可以是不同的,而且还可以嵌套起来,实现复杂的数据结构。

CREATE TABLE IF NOT EXISTS test_tuple (id Int32, value Tuple(Int32, String)) ENGINE = Memory;
INSERT INTO test_tuple (id, value) VALUES 
    (1, (1, 'Hello')), 
    (2, (2, 'World')), 
    (3, (3, 'ClickHouse'));

4、Array类型

Array类型用于存储具有相同类型的数据的数组,长度可以是不同的。

CREATE TABLE IF NOT EXISTS test_array (id Int32, value Array(String)) ENGINE = Memory;
INSERT INTO test_array (id, value) VALUES 
    (1, ['hello', 'world', '!']), 
    (2, ['Click', 'House']), 
    (3, []);

5、Nullable类型

Nullable类型用于存储可空类型的数据,即数据中可能存在空值。在ClickHouse中,Nullable类型只用于基本类型和Date、DateTime和String类型。

CREATE TABLE IF NOT EXISTS test_nullable (id Int32, value Nullable(String)) ENGINE = Memory;
INSERT INTO test_nullable (id, value) VALUES 
    (1, 'hello'), 
    (2, NULL), 
    (3, 'world');

6、LowCardinality类型

LowCardinality类型用于在存储无序的字符串类型时,优化字典压缩效率。当一个字符串类型的值只有几种取值时,使用LowCardinality类型可以让查询变得更快。

CREATE TABLE IF NOT EXISTS test_lowcardinality (id Int32, value LowCardinality(String)) ENGINE = Memory;
INSERT INTO test_lowcardinality (id, value) VALUES 
    (1, 'hello'), 
    (2, 'ClickHouse'), 
    (3, 'world');

五、其他类型

1、IPv4类型

IPv4类型用于存储IPv4地址。

CREATE TABLE IF NOT EXISTS test_ipv4 (id Int32, ip IPv4) ENGINE = Memory;
INSERT INTO test_ipv4 (id, ip) VALUES 
    (1, toIPv4('192.168.1.1')), 
    (2, toIPv4('172.16.0.1')), 
    (3, toIPv4('10.0.0.1'));

2、UUID类型

UUID类型用于存储UUID(Universally Unique Identifier,通用唯一识别码)。

CREATE TABLE IF NOT EXISTS test_uuid (id Int32, uuid UUID) ENGINE = Memory;
INSERT INTO test_uuid (id, uuid) VALUES 
    (1, '5405b6f2-36c3-11eb-adc1-0242ac120002'), 
    (2, 'ccaa0c47-36c3-11eb-adc1-0242ac120002'), 
    (3, 'ec42737a-36c3-11eb-adc1-0242ac120002');

以上就是ClickHouse的数据类型的详细介绍,包括整型、浮点型、日期时间型、字符串和二进制型、其他类型。在使用ClickHouse时,需要根据实际情况选用合适的数据类型来存储数据,以便提高查询和存储效率。

原创文章,作者:TVFAL,如若转载,请注明出处:https://www.506064.com/n/370161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TVFALTVFAL
上一篇 2025-04-18 13:40
下一篇 2025-04-18 13:40

相关推荐

  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • Python 转换数据类型

    本文将详细探讨Python中转换数据类型的方法和技巧,帮助大家更好地处理不同类型的数据。 一、数据类型概述 在Python中,常用的数据类型包括字符串、整数、浮点数、列表、元组、字…

    编程 2025-04-29
  • Python数据类型分为哪几种

    Python作为一门非常灵活的编程语言,有着非常丰富的数据类型。Python的数据类型可以分为数字类型、字符串类型、列表类型、元组类型、字典类型和集合类型六种。 一、数字类型 Py…

    编程 2025-04-29
  • Python数据类型操作题

    本文将从多个方面对Python数据类型操作题进行详细阐述,并给出相应的代码示例。 一、列表 列表是Python中的常见数据类型之一,可以存储各种类型的对象。下面是一些常见的列表操作…

    编程 2025-04-27
  • Python3支持的数据类型有哪些

    本文将从多个方面对Python3支持的数据类型进行详细阐述。 一、数字型数据类型 Python3中的数字型数据类型包括整数型(int)、浮点型(float)和复数型(complex…

    编程 2025-04-27
  • Python数值数据类型包括

    Python是当今世界上最受欢迎的编程语言之一。它是一种高级动态解释型语言,包含许多内置的数据结构和函数。Python支持多种数据类型,包括数值数据类型,这些数据类型对于科学计算和…

    编程 2025-04-27
  • Python组合数据类型的应用

    Python组合数据类型是指Python中的列表、元组、字典、集合等数据类型。这些数据类型是Python编程中最为常用的基础数据类型,也是不可或缺的工具。本文将从多个方面详细阐述P…

    编程 2025-04-27
  • 如何在Python中强制转换数据类型为矩阵

    Python作为一门高级编程语言,在数学计算方面有着十分优秀的表现。在进行数据分析和科学计算时,操作矩阵是常见的需求。但是,Python中并没有专门的矩阵数据类型,因此需要使用其他…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25

发表回复

登录后才能评论