Int8 - [-128 : 127]:对应Java byte-8bit Int16 - [-32768 : 32767]:对应Java short-16bit Int32 - [-2147483648 : 2147483647]:对应Java int-32bit Int64 - [-9223372036854775808 : 9223372036854775807]:对应Java long-64bit
无符号整型范围(0~2n-1):
UInt8 - [0 : 255] UInt16 - [0 : 65535] UInt32 - [0 : 4294967295] UInt64 - [0 : 18446744073709551615]使用场景: 个数、数量、也可以存储型 id。
SELECT 1.0-0.9; superset-BI :) SELECT 1.0-0.9; SELECT 1. - 0.9 Query id: d746d86c-529e-44ec-9e06-3335ea31d260 ┌──────minus(1., 0.9)─┐ │ 0.09999999999999998 │ └─────────────────────┘ 1 rows in set. Elapsed: 0.001 sec.使用场景:一般数据值比较小,不涉及大量的统计计算,精度要求不高的时候。比如保存商品的重量。
superset-BI :) CREATE TABLE t_enum ( x Enum8('hello' = 1, 'world' = 2) ) ENGINE = TinyLog; CREATE TABLE t_enum ( `x` Enum8('hello' = 1, 'world' = 2) ) ENGINE = TinyLog Query id: 17316278-58b3-4528-922c-fea7056c007d Ok. 0 rows in set. Elapsed: 0.007 sec.
2)这个 x 列只能存储类型定义中列出的值:'hello'或'world'
superset-BI :) INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello'); INSERT INTO t_enum FORMAT Values Query id: fa380f50-87ef-4ebe-804f-17458e29695f Ok. 3 rows in set. Elapsed: 0.002 sec.3)如果尝试保存任何其他值,ClickHouse 抛出异常
superset-BI :) insert into t_enum values('a'); INSERT INTO t_enum FORMAT Values Query id: 7b9b13e7-ab00-4ba2-b612-5caea0135509 Exception on client: Code: 36. DB::Exception: Unknown element 'a' for enum: While executing ValuesBlockInputFormat: data for INSERT was parsed from query. (BAD_ARGUMENTS)4)如果需要看到对应行的数值,则必须将 Enum 值转换为整数类型
superset-BI :) SELECT CAST(x, 'Int8') FROM t_enum; SELECT CAST(x, 'Int8') FROM t_enum Query id: d91d83ea-edd1-4cfa-a275-0777635b5591 ┌─CAST(x, 'Int8')─┐ │ 1 │ │ 2 │ │ 1 │ └─────────────────┘ 3 rows in set. Elapsed: 0.002 sec.使用场景:对一些状态、类型的字段算是一种空间优化,也算是一种数据约束。但是实 际使用中往往因为一些数据内容的变化增加一定的维护成本,甚至是数据丢失问题。所以谨 慎使用。
superset-BI :) SELECT array(1, 2) AS x, toTypeName(x) ; SELECT [1, 2] AS x, toTypeName(x) Query id: 0d5f1fb5-5790-487b-b779-5fa2eb3ee498 ┌─x─────┬─toTypeName([1, 2])─┐ │ [1,2] │ Array(UInt8) │ └───────┴────────────────────┘ 1 rows in set. Elapsed: 0.002 sec.
(2)创建数组方式 2:使用方括号 []
superset-BI :) SELECT [1, 2] AS x, toTypeName(x); SELECT [1, 2] AS x, toTypeName(x) Query id: 51dcdd1f-e2ee-4be4-88af-d6b075497a81 ┌─x─────┬─toTypeName([1, 2])─┐ │ [1,2] │ Array(UInt8) │ └───────┴────────────────────┘ 1 rows in set. Elapsed: 0.002 sec.还有很多数据结构,可以参考官方文档:https://clickhouse.yandex/docs/zh/data_types/