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/zh-hk/n/370161.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TVFAL的頭像TVFAL
上一篇 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

發表回復

登錄後才能評論