一、整型
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
 
 微信扫一扫
微信扫一扫  支付宝扫一扫
支付宝扫一扫 