
# 数据类型
此章节描述ClickHouse的数据类型。
ClickHouse不支持JSON以及Object('json')数据类型。
#### 数据类型表
表1数据类型表 
| 分类          | 关键字         | 数据类型       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| 整数类型        | Int8        | Int8       | 取值范围：【-128，127】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 整数类型        | Int16       | Int16      | 取值范围：【-32768，32767】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 整数类型        | Int32       | Int32      | 取值范围：【-2147483648，2147483647】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 整数类型        | Int64       | Int64      | 取值范围：【-9223372036854775808，9223372036854775807】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 浮点类型        | Float32     | 单精度浮点数     | 同C语言Float类型，单精度浮点数在机内占4个字节，用32位二进制描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 浮点类型        | Float64     | 双精度浮点数     | 同C语言Double类型，双精度浮点数在机内占8个字节，用64位二进制描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Decimal类型   | Decimal     | Decimal    | 有符号的定点数，可在加、减和乘法运算过程中保持精度。支持几种写法： - Decimal(P, S)  - Decimal32(S)  - Decimal64(S)  - Decimal128(S) 说明： P：精度，有效范围：\[1:38\]，决定可以有多少个十进制数字（包括分数）。 S：规模，有效范围：\[0：P\]，决定数字的小数部分中包含的小数位数。    |
| 字符串类型       | String      | 字符串        | 字符串可以是任意长度的。它可以包含任意的字节集，包含空字节。因此，字符串类型可以代替其他DBMSs中的VARCHAR、BLOB、CLOB等类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 字符串类型       | FixedString | 固定字符串      | 当数据的长度恰好为N个字节时，FixedString类型是高效的。 在其他情况下，这可能会降低效率。可以有效存储在FixedString类型的列中的值的示例： - 二进制表示的IP地址（IPv6使用FixedString（16））  - 语言代码  - 货币代码  - 二进制表示的哈希值（MD5使用FixedString（16），SHA256使用FixedString（32））                                                                                                                          |
| 时间日期类型      | Date        | 日期         | 用两个字节存储，表示从1970-01-01（无符号）到当前的日期值。日期中没有存储时区信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 时间日期类型      | DateTime    | 时间戳        | 用四个字节（无符号的）存储Unix时间戳。允许存储与日期类型相同的范围内的值。最小值为1970-01-01 00:00:00。时间戳类型值精确到秒（没有闰秒）。时区使用启动客户端或服务器时的系统时区。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 时间日期类型      | DateTime64  | DateTime64 | 此类型允许以日期（date）加时间（time）的形式来存储一个时刻的时间值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 布尔型         | Boolean     | Boolean    | ClickHouse没有单独的类型来存储布尔值。可以使用UInt8类型，取值限制为0或1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 数组类型        | Array       | Array      | Array(T)，由T类型元素组成的数组。T可以是任意类型，包含数组类型。但不推荐使用多维数组，ClickHouse对多维数组的支持有限。例如，不能在MergeTree表中存储多维数组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 元组类型        | Tuple       | Tuple      | Tuple(T1, T2, ...)，元组，其中每个元素都有单独的类型，不能在表中存储元组（除了内存表）。它们可以用于临时列分组。在查询中，IN表达式和带特定参数的lambda函数可以来对临时列进行分组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Domains数据类型 | Domains     | Domains    | Domains类型是特定实现的类型： - IPv4是与UInt32类型保持二进制兼容的Domains类型，用于存储IPv4地址的值。它提供了更为紧凑的二进制存储的同时支持识别可读性更加友好的输入输出格式。  - IPv6是与FixedString（16）类型保持二进制兼容的Domain类型，用于存储IPv6地址的值。它提供了更为紧凑的二进制存储的同时支持识别可读性更加友好的输入输出格式。                                                                                                                                                                                                                                                                                                                                                                                        |
| 枚举类型        | Enum8       | Enum8      | 取值范围：【-128，127】 Enum保存'string'= integer的对应关系，例如：Enum8('hello' = 1, 'world' = 2)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 枚举类型        | Enum16      | Enum16     | 取值范围：【-32768，32767】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 可为空         | Nullable    | Nullable   | 除非在ClickHouse服务器配置中另有说明，否则NULL是任何Nullable类型的默认值。Nullable类型字段不能包含在表索引中。 可以与TypeName的正常值存放一起。例如，Nullable(Int8) 类型的列可以存储Int8类型值，而没有值的行将存储NULL。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 嵌套类型        | nested      | nested     | 嵌套的数据结构就像单元格内的表格。嵌套数据结构的参数（列名和类型）的指定方式与CREATE TABLE查询中的指定方式相同。每个表行都可以对应于嵌套数据结构中的任意数量的行。 示例：Nested(Name1 Type1, Name2 Type2, ...)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
