【ClickHouse】创建表

1、本地表

sql 复制代码
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = engine

在指定的'db'数据库中创建一个名为'name'的表,如果查询中没有包含'db',则默认使用当前选择的数据库作为'db'。

括号中的表结构声明是一个包含一组列描述声明的组合。

ENGIN 为表引擎的声明。如果表引擎是支持索引的,那么可以在表引擎的参数中对其进行说明。

如果指定了IF NOT EXISTS,那么在该表已经存在的情况下,查询不会返回任何错误。在这种情况下,查询几乎不会做任何事情。

示例:

sql 复制代码
CREATE TABLE db_admin.api_user on  cluster cluster_demo (
	`id` String, 
	`name` String
) ENGINE = MergeTree ORDER BY id SETTINGS index_granularity = 8192

2、分布表:

sql 复制代码
CREATE TABLE db_admin.api_user_all on  cluster cluster_demo as db_admin.api_user
ENGINE = Distributed('cluster_demo', 'db_admin', api_user, rand())

3、复制表结构

sql 复制代码
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] AS [db2.]name2 [ENGINE = engine]

创建一个与db2.name2具有相同结构的表,同时你可以对其指定不同的表引擎声明。如果没有表引擎声明,则创建的表将与db2.name2使用相同的表引擎。

sql 复制代码
CREATE TABLE db_admin.role as db_admin.role2 

CREATE TABLE db_admin.menu on cluster cluster_demo as db_admin.menu2

4、复制表及数据

sql 复制代码
CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = engine AS SELECT ...

使用指定的引擎创建一个与SELECT子句的结果具有相同结构的表,并使用SELECT子句的结果填充它。

示例:

sql 复制代码
CREATE TABLE db_admin.role ENGINE = MergeTree ORDER BY id AS select * from db_admin.role 

10、资料

相关推荐
zhangchaoxies1 分钟前
golang如何使用SQLx原生SQL查询_golang SQLx原生SQL查询使用方法
jvm·数据库·python
m0_743623921 分钟前
mysql如何优化InnoDB缓冲池大小_mysql缓冲池内存调优
jvm·数据库·python
孟意昶3 分钟前
Doris专题31-SQL手册-基础元素
大数据·数据库·数据仓库·分布式·sql·知识图谱·doris
m0_617881424 分钟前
如何操作 XML 数据_XMLTYPE 与 EXTRACT 函数解析节点
jvm·数据库·python
qq_334563559 分钟前
golang如何实现SSTable持久化_golang SSTable持久化实现要点
jvm·数据库·python
2301_7775993711 分钟前
Redis怎样应对大规模集群的重启风暴_分批次重启节点并等待集群状态恢复绿灯后再继续操作
jvm·数据库·python
一只小白00019 分钟前
Redis 常用命令总结
数据库·redis·缓存
逻辑驱动的ken25 分钟前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表
解救女汉子29 分钟前
MySQL并发写入如何避免锁竞争_使用队列缓冲与批量插入优化
jvm·数据库·python
qq_3422958230 分钟前
HTML函数开发需要SSD吗_SSD对HTML函数开发效率影响【详解】
jvm·数据库·python