向导
- 1.支持的常见数据类型
- 1.Int
- 2.float: 浮点数
- 3.布尔值
- 4.字符串
- 5.UUID:通用唯一标识符
- 6.Date:日期
- 7.Datetime:时间戳
- 8.Enum:枚举
- 9.Nullable:可为空/缺失值
- 10.Array(T):数组
- 11.Tuple(T1,T2,...):元组
- 12.Nested(Name1 Type1, Name2 Type2, ...):嵌套
- 2.表操作
- 3.列操作
1.支持的常见数据类型
- 查看官方文档:https://clickhouse.tech/docs/en/sql-reference/data-types/
- 查看系统表:select * from system.data_type_families;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432SELECT * FROM system.data_type_families ┌─name────────────────────────────┬─case_insensitive─┬─alias_to────┐ │ Ring │ 0 │ │ │ Polygon │ 0 │ │ │ IPv6 │ 0 │ │ │ IPv4 │ 0 │ │ │ IntervalYear │ 0 │ │ │ IntervalQuarter │ 0 │ │ │ IntervalMonth │ 0 │ │ │ IntervalDay │ 0 │ │ │ IntervalHour │ 0 │ │ │ IntervalSecond │ 0 │ │ │ AggregateFunction │ 0 │ │ │ Nothing │ 0 │ │ │ Tuple │ 0 │ │ │ Array │ 0 │ │ │ Nullable │ 0 │ │ │ Int32 │ 0 │ │ │ Date │ 1 │ │ │ Enum │ 0 │ │ │ Enum8 │ 0 │ │ │ IntervalMinute │ 0 │ │ │ FixedString │ 0 │ │ │ LowCardinality │ 0 │ │ │ String │ 0 │ │ │ DateTime │ 1 │ │ │ UUID │ 0 │ │ │ Decimal64 │ 1 │ │ │ Decimal32 │ 1 │ │ │ Point │ 0 │ │ │ Float64 │ 0 │ │ │ Int16 │ 0 │ │ │ DateTime64 │ 1 │ │ │ Decimal128 │ 1 │ │ │ Int8 │ 0 │ │ │ SimpleAggregateFunction │ 0 │ │ │ Nested │ 0 │ │ │ Int64 │ 0 │ │ │ Decimal │ 1 │ │ │ IntervalWeek │ 0 │ │ │ UInt64 │ 0 │ │ │ Enum16 │ 0 │ │ │ UInt32 │ 0 │ │ │ UInt16 │ 0 │ │ │ Float32 │ 0 │ │ │ MultiPolygon │ 0 │ │ │ UInt8 │ 0 │ │ │ INET6 │ 1 │ IPv6 │ │ INET4 │ 1 │ IPv4 │ │ BINARY │ 1 │ FixedString │ │ NATIONAL CHAR VARYING │ 1 │ String │ │ BINARY VARYING │ 1 │ String │ │ NCHAR LARGE OBJECT │ 1 │ String │ │ NATIONAL CHARACTER VARYING │ 1 │ String │ │ NATIONAL CHARACTER LARGE OBJECT │ 1 │ String │ │ NATIONAL CHARACTER │ 1 │ String │ │ NATIONAL CHAR │ 1 │ String │ │ CHARACTER VARYING │ 1 │ String │ │ CLOB │ 1 │ String │ │ MEDIUMTEXT │ 1 │ String │ │ NUMERIC │ 1 │ Decimal │ │ TINYTEXT │ 1 │ String │ │ TEXT │ 1 │ String │ │ TINYBLOB │ 1 │ String │ │ VARCHAR2 │ 1 │ String │ │ DOUBLE PRECISION │ 1 │ Float64 │ │ CHARACTER LARGE OBJECT │ 1 │ String │ │ LONGTEXT │ 1 │ String │ │ NVARCHAR │ 1 │ String │ │ INT1 UNSIGNED │ 1 │ UInt8 │ │ VARCHAR │ 1 │ String │ │ INT │ 1 │ Int32 │ │ SINGLE │ 1 │ Float32 │ │ BYTEA │ 1 │ String │ │ CHAR VARYING │ 1 │ String │ │ MEDIUMBLOB │ 1 │ String │ │ NCHAR │ 1 │ String │ │ CHAR │ 1 │ String │ │ SMALLINT UNSIGNED │ 1 │ UInt16 │ │ TIMESTAMP │ 1 │ DateTime │ │ FIXED │ 1 │ Decimal │ │ LONGBLOB │ 1 │ String │ │ DEC │ 1 │ Decimal │ │ TINYINT UNSIGNED │ 1 │ UInt8 │ │ INTEGER UNSIGNED │ 1 │ UInt32 │ │ INT UNSIGNED │ 1 │ UInt32 │ │ BLOB │ 1 │ String │ │ REAL │ 1 │ Float32 │ │ BOOL │ 1 │ Int8 │ │ SMALLINT │ 1 │ Int16 │ │ INTEGER SIGNED │ 1 │ Int32 │ │ NCHAR VARYING │ 1 │ String │ │ INT SIGNED │ 1 │ Int32 │ │ BIGINT SIGNED │ 1 │ Int64 │ │ BINARY LARGE OBJECT │ 1 │ String │ │ SMALLINT SIGNED │ 1 │ Int16 │ │ TINYINT SIGNED │ 1 │ Int8 │ │ INTEGER │ 1 │ Int32 │ │ INT1 SIGNED │ 1 │ Int8 │ │ BIGINT UNSIGNED │ 1 │ UInt64 │ │ FLOAT │ 1 │ Float32 │ │ BOOLEAN │ 1 │ Int8 │ │ DOUBLE │ 1 │ Float64 │ │ INT1 │ 1 │ Int8 │ │ CHAR LARGE OBJECT │ 1 │ String │ │ TINYINT │ 1 │ Int8 │ │ BIGINT │ 1 │ Int64 │ │ CHARACTER │ 1 │ String │ │ BYTE │ 1 │ Int8 │ └─────────────────────────────────┴──────────────────┴─────────────┘ 107 rows in set. Elapsed: 0.003 sec.
1.Int
Int Ranges (有符号的整型)
- Int8 - [-128 : 127]
- Int16 - [-32768 : 32767]
- Int32 - [-2147483648 : 2147483647]
- Int64 - [-9223372036854775808 : 9223372036854775807]
Uint Ranges (无符号的整型)
- UInt8 - [0 : 255]
- UInt16 - [0 : 65535]
- UInt32 - [0 : 4294967295]
- UInt64 - [0 : 18446744073709551615]
2.float: 浮点数
- Float32 - float
- Float64 - double
1
2
3
4
5
6
7
8建议尽可能以整数形式存储数据。 对浮点数进行计算可能引起四舍五入的误差。 浮点计算结果可能是诸如正无穷大(inf)、负无穷大(-inf)和"非数字"(nan)。 SELECT 1 - 0.9 # 0.09999999999999998 SELECT 0.5 / 0 # inf SELECT -0.5 / 0 # -inf SELECT 0 / 0 # nan
- Decimal(P,S): 有符号的定点数
(Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S))
有符号的定点数,可在加、减和乘法运算过程中保持精度。对于除法,最低有效数字会被丢弃(不舍入)。
P - 精度。有效范围:[1:38],决定可以有多少个十进制数字(包括分数)。
S - 规模。有效范围:[0:P],决定数字的小数部分中包含的小数位数。
对于不同的 P 参数值 Decimal 表示,以下例子都是同义的:
-P从[1:9]-对于Decimal32(S)
-P从[10:18]-对于Decimal64(小号)
-P从[19:38]-对于Decimal128(S)
十进制值范围
Decimal32(S) - ( -1 * 10^(9 - S),110^(9-S) )
Decimal64(S) - ( -1 * 10^(18 - S),110^(18-S) )
Decimal128(S) - ( -1 * 10^(38 - S),1*10^(38-S) )
例如,Decimal32(4) 可以表示 -99999.9999 至 99999.9999 的数值,步长为0.0001。
3.布尔值
没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0 或 1。
4.字符串
- String:变长字符串,字符串可以任意长度的。它可以包含任意的字节集,包含空字节。
- FixedString(N):变长字符串,固定长度 N 的字符串。N 必须是严格的正自然数。
当数据的长度恰好为N个字节时,FixedString类型是高效的。 在其他情况下,这可能会降低效率。
5.UUID:通用唯一标识符
通用唯一标识符(UUID)是用于标识记录的16字节数字。
如果在插入新记录时未指定UUID列值,则UUID值将填充为零:00000000-0000-0000-0000-000000000000
要生成UUID值,ClickHouse提供generateUUIDv4()函数。
1
2select generateUUIDv4() # 29fc209d-eba3-4adf-b7cb-d4600036d10a
UUID数据类型不支持算术运算(例如,abs)或聚合函数(例如sum和avg)。
UUID数据类型仅支持String数据类型也支持的函数(例如,min,max和count)。
6.Date:日期
日期类型,用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值。
允许存储从 Unix 纪元开始到编译阶段定义的上限阈值常量(目前上限是2106年,但最终完全支持的年份为2105)。最小值输出为1970-01-01。
日期中没有存储时区信息。
7.Datetime:时间戳
时间戳类型。用四个字节(无符号的)存储 Unix 时间戳。允许存储与日期类型相同的范围内的值。最小值为 1970-01-01 00:00:00。时间戳类型值精确到秒(没有闰秒)。
时区:
使用启动客户端或服务器时的系统时区,时间戳是从文本(分解为组件)转换为二进制并返回。在文本格式中,有关夏令时的信息会丢失。
默认情况下,客户端连接到服务的时候会使用服务端时区。您可以通过启用客户端命令行选项 --use_client_time_zone 来设置使用客户端时间。
因此,在处理文本日期时(例如,在保存文本转储时),请记住在夏令时更改期间可能存在歧义,如果时区发生更改,则可能存在匹配数据的问题。
8.Enum:枚举
枚举类型(Enum8, Enum16)
Enum 保存 ‘string’= integer 的对应关系。
在 ClickHouse 中,尽管用户使用的是字符串常量,但所有含有 Enum 数据类型的操作都是按照包含整数的值来执行。这在性能方面比使用 String 数据类型更有效。
Enum8 用 ‘String’= Int8 对描述。
Enum16 用 ‘String’= Int16 对描述。
1
2
3
4
5
6
7CREATE TABLE t_enum ( x Enum('hello' = 1, 'world' = 2) ) ENGINE = TinyLog INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello')
这个 x 列只能存储类型定义中列出的值:‘hello’或’world’。如果您尝试保存任何其他值,ClickHouse 抛出异常。
9.Nullable:可为空/缺失值
允许用特殊标记 (NULL) 表示«缺失值»,可以与 TypeName 的正常值存放一起。例如,Nullable(Int8) 类型的列可以存储 Int8 类型值,而没有值的行将存储 NULL。
对于 TypeName,不能使用复合数据类型 阵列 和 元组。复合数据类型可以包含 Nullable 类型值,例如Array(Nullable(Int8))。
Nullable 类型字段不能包含在表索引中。
除非在 ClickHouse 服务器配置中另有说明,否则 NULL 是任何 Nullable 类型的默认值。
要在表的列中存储 Nullable 类型值,ClickHouse 除了使用带有值的普通文件外,还使用带有 NULL 掩码的单独文件。 掩码文件中的条目允许 ClickHouse 区分每个表行的 NULL 和相应数据类型的默认值。 由于附加了新文件,Nullable 列与类似的普通文件相比消耗额外的存储空间。所以使用 Nullable 几乎总是对性能产生负面影响,在设计数据库时请记住这一点!
10.Array(T):数组
由 T 类型元素组成的数组。
T 可以是任意类型,包含数组类型。 但不推荐使用多维数组,ClickHouse 对多维数组的支持有限。
可以使用array()函数和中括号来创建数组
SELECT array(1, 2)
SELECT [1, 2]
如果在元素中存在 NULL或存在 Nullable类型元素,那么数组的元素类型将会变成 Nullable。
如果 ClickHouse 无法确定数据类型,它将产生异常。
11.Tuple(T1,T2,…):元组
元组,其中每个元素都有单独的类型。
SELECT tuple(1,‘a’)
12.Nested(Name1 Type1, Name2 Type2, …):嵌套
嵌套数据结构类似于嵌套表。嵌套数据结构的参数(列名和类型)与 CREATE 查询类似。每个表可以包含任意多行嵌套数据结构。
只支持一级嵌套。嵌套结构的列中,若列的类型是数组类型,那么该列其实和多维数组是相同的,所以目前嵌套层级的支持很局限(MergeTree 引擎中不支持存储这样的列)
大多数情况下,处理嵌套数据结构时,会指定一个单独的列。为了这样实现,列的名称会与点号连接起来。这些列构成了一组匹配类型。在同一条嵌套数据中,所有的列都具有相同的长度。
不能对整个嵌套数据结构执行 SELECT。只能明确列出属于它一部分列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21CREATE TABLE test.visits ( CounterID UInt32, StartDate Date, Sign Int8, IsNew UInt8, VisitID UInt64, UserID UInt64, ... Goals Nested ( ID UInt32, Serial UInt32, EventTime DateTime, Price Int64, OrderID String, CurrencyID UInt32 ), ... ) ENGINE = CollapsingMergeTree(StartDate, intHash32(UserID), (CounterID, StartDate, intHash32(UserID), VisitID), 8192, Sign)
2.表操作
Clickhouse对表操作分为四大类:增删查改(INSERT,DROP,SELECT,ALTER)。
增,删,查比较简单,改最复杂。
- 1 ALTER TABLE
- 1.1 ALTER UPDATE
- 1.2 ALTER DELETE
- 1.3 ALTER COLUMN
- 1.3.1 ALTER ADD COLUMN
- 1.3.2 ALTER DROP COLUMN
- 1.3.3 ALTER MODIFY COLUMN
- 1.3.4 ALTER COMMENT COLUMN
- 1.3.5 ALTER CLEAR COLUMN
- 1.3.6 ALTER RENAME COLUMN
- 2.1 ALTER INDEX
- 2.1.1 ALTER ORDER BY
- 2.1.2 ALTER SAMPLE BY
- 2.1.3 ALTER ADD INDEX
- 2.1.4 ALTER DROP INDEX
- 2.1.5 ALTER MATERIALIZE INDEX
- 2.1.6 ALTER CLEAR INDEX
- 3.1 ALTER CONSTRAINT
- 3.1.1 ALTER ADD CONSTRAINT
- 3.1.2 ALTER DROP CONSTRAINT
- 4.1 ALTER TTL
- 5.1 ALTER MATERIALIZE TTL
- 6.1 ALTER SETTINGS
- 7.1 ALTER MOVE PARTITION
- 8.1 ALTER FETCH PARTITION
- 9.1 ALTER FREEZE PARTITION
- 10.1 ALTER VIEW
- 10.1.1 ALTER VIEW REFRESH
- 10.1.2 ALTER VIEW MODIFY QUERY
3.列操作
ALTER查询仅支持* MergeTree族表引擎,以及Merge表引擎和Distributed表引擎。
ALTER操作阻塞所有对表的其他操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#添加列 ALTER TABLE [db].name [ON CLUSTER cluster] ADD COLUMN [IF NOT EXISTS] name [type] [default_expr] [AFTER name_after] #删除列 ALTER TABLE [db].name [ON CLUSTER cluster] DROP COLUMN [IF EXISTS] name #重置指定分区中列的所有数据 ALTER TABLE [db].name [ON CLUSTER cluster] CLEAR COLUMN [IF EXISTS] name IN PARTITION partition_name #添加列注解 ALTER TABLE [db].name [ON CLUSTER cluster] COMMENT COLUMN [IF EXISTS] name 'comment' #修改列类型或者列的默认值 ALTER TABLE [db].name [ON CLUSTER cluster] MODIFY COLUMN [IF EXISTS] name [type] [default_expr] #添加索引 ALTER TABLE [db].name ADD INDEX name expression TYPE type GRANULARITY value AFTER name [AFTER name2] #删除索引 ALTER TABLE [db].name DROP INDEX name #分离分区 ALTER TABLE table_name DETACH PARTITION partition_expr #删除分区 ALTER TABLE table_name DROP PARTITION partition_expr #添加被分离的分区 ALTER TABLE table_name ATTACH PARTITION|PART partition_expr #复制table1中的分区数据到table2 ALTER TABLE table2 REPLACE PARTITION partition_expr FROM table1 #重置列值为默认值,默认值为创建表时指定 ALTER TABLE table_name CLEAR COLUMN column_name IN PARTITION partition_expr #创建指定分区或者所有分区的备份 ALTER TABLE table_name FREEZE [PARTITION partition_expr] #从其他分片中复制分区数据 ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'path-in-zookeeper'
最后
以上就是真实发夹最近收集整理的关于Clickhouse -- 基础和入门三1.支持的常见数据类型2.表操作3.列操作的全部内容,更多相关Clickhouse内容请搜索靠谱客的其他文章。
发表评论 取消回复