跳到主要内容

数据类型

以下是ClickHouse支持的主要数据类型列表,每种数据类型都附带一个示例建表语句、使用场景、与MySQL对应的数据类型以及一个INSERT语句示例:

整数类型

  • Int8, Int16, Int32, Int64

  • UInt8, UInt16, UInt32, UInt64

    示例建表语句:

    CREATE TABLE int_example
    (
    col_int32 Int32,
    col_uint64 UInt64
    ) ENGINE = MergeTree()
    ORDER BY col_int32;

    使用场景:存储整数数据,如ID、计数等。

    MySQL对应数据类型:TINYINT, SMALLINT, INT, BIGINT, UNSIGNED TINYINT, UNSIGNED SMALLINT, UNSIGNED INT, UNSIGNED BIGINT

    INSERT语句示例:

    INSERT INTO int_example (col_int32, col_uint64) VALUES (42, 100);

浮点数类型

  • Float32, Float64

    示例建表语句:

    CREATE TABLE float_example
    (
    col_float32 Float32,
    col_float64 Float64
    ) ENGINE = MergeTree()
    ORDER BY col_float64;

    使用场景:存储浮点数数据,如金额、温度等。

    MySQL对应数据类型:FLOAT, DOUBLE

    INSERT语句示例:

    INSERT INTO float_example (col_float32, col_float64) VALUES (3.14, 6.28);

定点数类型

  • Decimal32, Decimal64, Decimal128

    示例建表语句:

    CREATE TABLE decimal_example
    (
    col_decimal32 Decimal32(9, 2),
    col_decimal64 Decimal64(18, 4)
    ) ENGINE = MergeTree()
    ORDER BY col_decimal64;

    使用场景:需要固定小数位数的高精度数值,如货币数据。

    MySQL对应数据类型:DECIMAL, DECIMAL, DECIMAL

    INSERT语句示例:

    INSERT INTO decimal_example (col_decimal32, col_decimal64) VALUES (123.45, 9876.5432);

日期和时间类型

  • Date, DateTime, DateTime64

    示例建表语句:

    CREATE TABLE datetime_example
    (
    col_date Date,
    col_datetime DateTime
    ) ENGINE = MergeTree()
    ORDER BY col_datetime;

    使用场景:存储日期和时间数据,如订单时间、日志时间等。

    MySQL对应数据类型:DATE, DATETIME, DATETIME

    INSERT语句示例:

    INSERT INTO datetime_example (col_date, col_datetime) VALUES ('2023-08-10', '2023-08-10 14:30:00');

字符串类型

  • String, FixedString(n)

    示例建表语句:

    CREATE TABLE string_example
    (
    col_string String,
    col_fixed_string FixedString(10)
    ) ENGINE = MergeTree()
    ORDER BY col_string;

    使用场景:存储可变长度字符串和固定长度字符串。

    MySQL对应数据类型:VARCHAR, CHAR

    INSERT语句示例:

    INSERT INTO string_example (col_string, col_fixed_string) VALUES ('Hello', 'World');

枚举类型

  • Enum8, Enum16

    示例建表语句:

    CREATE TABLE enum_example
    (
    col_enum8 Enum8('A' = 1, 'B' = 2),
    col_enum16 Enum16('X' = 10, 'Y' = 20)
    ) ENGINE = MergeTree()
    ORDER BY col_enum16;

    使用场景:存储枚举值,如状态、类型等。

    MySQL对应数据类型:ENUM

    INSERT语句示例:

    INSERT INTO enum_example (col_enum8, col_enum16) VALUES ('A', 'Y');

UUID类型

  • UUID

    示例建表语句:

    CREATE TABLE uuid_example
    (
    col_uuid UUID
    ) ENGINE = MergeTree()
    ORDER BY col_uuid;

    使用场景:存储唯

一标识符。

MySQL对应数据类型:CHAR(36)

INSERT语句示例:

INSERT INTO uuid_example (col_uuid) VALUES ('550e8400-e29b-41d4-a716-446655440000');

IPv4和IPv6类型

  • IPv4, IPv6

    示例建表语句:

    CREATE TABLE ip_example
    (
    col_ipv4 IPv4,
    col_ipv6 IPv6
    ) ENGINE = MergeTree()
    ORDER BY col_ipv6;

    使用场景:存储IPv4和IPv6地址。

    MySQL对应数据类型:VARCHAR(45)

    INSERT语句示例:

    INSERT INTO ip_example (col_ipv4, col_ipv6) VALUES ('192.168.1.1', '2001:0db8:85a3:0000:0000:8a2e:0370:7334');

数组类型

  • Array(T)

    示例建表语句:

    CREATE TABLE array_example
    (
    col_array Array(Int32)
    ) ENGINE = MergeTree()
    ORDER BY col_array;

    使用场景:存储数组数据,如标签、多选项等。

    MySQL对应数据类型:无直接对应

    INSERT语句示例:

    INSERT INTO array_example (col_array) VALUES ([1, 2, 3]);

元组类型

- `Tuple(T1, T2, ...)`

示例建表语句:
```sql
CREATE TABLE tuple_example
(
col_tuple Tuple(String, Int32, Float64)
) ENGINE = MergeTree()
ORDER BY col_tuple;
```

使用场景:存储多种类型的值的组合。

MySQL对应数据类型:无直接对应

INSERT语句示例:
```sql
INSERT INTO tuple_example (col_tuple) VALUES (('Alice', 25, 5.6));
```

Nullable类型

- `Nullable(T)`

示例建表语句:
```sql
CREATE TABLE nullable_example2
(
col_nullable Nullable(Int32),
col_nullable_string String,
id int
) ENGINE = MergeTree()
ORDER BY id;
```

使用场景:存储允许为空的字段。

MySQL对应数据类型:无直接对应

INSERT语句示例:
```sql
INSERT INTO nullable_example2 (col_nullable, col_nullable_string) VALUES (NULL, 'Some Value');
INSERT INTO nullable_example2 (col_nullable, col_nullable_string) VALUES (NULL, NULL);

select * from nullable_example2;

┌─col_nullable─┬─col_nullable_string─┬─id─┐
│ ᴺᵁᴸᴸ │ Some Value │ 0 │
└──────────────┴─────────────────────┴────┘
┌─col_nullable─┬─col_nullable_string─┬─id─┐
│ ᴺᵁᴸᴸ │ │ 0 │
└──────────────┴─────────────────────┴────┘
```

AggregateFunction类型

- `AggregateFunction(arg_types, return_type)`

示例建表语句:
```sql
-- 请注意,这只是示例,实际使用时需要定义自己的聚合函数
CREATE TABLE aggregate_example
(
col_aggregate AggregateFunction(Int32, UInt64)
) ENGINE = MergeTree()
ORDER BY col_aggregate;
```

使用场景:存储自定义的聚合函数的结果。

MySQL对应数据类型:无直接对应

INSERT语句示例:不适用于此类型数据

请根据实际需要,使用适当的数据类型来创建表。这些示例建表语句仅为演示,实际表的字段和设计应根据数据存储需求进行定制。