clickhouse的SQL参考——(二)create

参考资料

https://clickhouse.tech/docs/en/sql-reference/statements/create/

版本:v20.11

目录

总览

CREATE DATABASE

子句

IF NOT EXISTS

ON CLUSTER

ENGINE

CREATE TABLE

语法形式

使用显示语法结构

使用其他表的结构

使用表函数返回的结构

默认值

DEFAULT子句

MATERIALIZED子句

ALIAS子句

约束(Constraints)

TTL 表达式

列压缩

General Purpose Codecs

specialized codecs

临时表(Temporary Tables)

CREATE VIEW

普通(normal)视图

实体(Materialized)视图

POPULATE修饰符

CREATE DICTIONARY

CREATE USER

身份验证

用户主机

举例

CREATE ROLE

管理角色

举例

CREATE ROW POLICY

AS 子句

TO 子句

举例

CREATE QUOTA

举例

CREATE SETTINGS PROFILE

举例


总览

create查询将创建以下类型之一:

CREATE DATABASE

创建一个新数据库

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

子句

IF NOT EXISTS

如果数据库名字db_name已经存在,那么clickhouse不会创建一个新数据库

  • 如果指定了子句,则不会引发异常。
  • 如果未指定子句,则引发异常。

ON CLUSTER

ClickHouse在指定集群的所有服务器上创建db_name数据库。  Distributed DDL 更多详细信息。

ENGINE

MySQL引擎允许您从远程MySQL服务器检索数据。

默认情况下,ClickHouse使用自己的数据库引擎(Ordinary)。

另外还有Lazy引擎、Memory引擎、Dictionary引擎。

CREATE TABLE

创建一个新表。 根据使用情况,此查询可以具有各种语法形式。

默认情况下,仅在当前服务器上创建表。Distributed DDL (分布式DDL)通过ON CLUSTER创建,该子句将单独描述。

语法形式

使用显示语法结构

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

如果db没有指定,则在当前数据库进行创建,如果指定db,则在db数据库进行创建,使用括号中的语句创建,并使用指定的engine引擎。

表的结构是 [列说明、二级索引和约束] 的列表。

如果引擎支持主键,那么主键将作为表引擎的参数。

在最简单情况下,列描述是名称+类型。例如:RegionID UInt32

也可以为默认值定义表达式。(参见下文)

使用其他表的结构

CREATE TABLE [IF NOT EXISTS] [db.]table_name AS [db2.]name2 [ENGINE = engine]

创建一张与另一个表具有相同结构的表。

可以为新表指定其他引擎。 如果未指定引擎,则将使用与旧表相同的引擎。

使用表函数返回的结构

CREATE TABLE [IF NOT EXISTS] [db.]table_name AS table_function()
CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = engine AS SELECT ...

用表函数返回的结构和数据创建一个表。

使用select查询返回的表结构创建表,可以指定engine,并使用select查询返回的值作为内容插入表中。

在所有情况下,如果指定了IF NOT EXISTS,那么如果表已经存在,查询将不会返回错误。 在这种情况下,查询将不会执行任何操作。

查询中的ENGINE子句之后可以有其他子句。参阅表引擎描述table engines.

默认值

列描述可以通过以下方式指定默认值的表达式:

  • DEFAULT expr
  • MATERIALIZED expr
  • ALIAS expr

举例:URLDomain String DEFAULT domain(URL).

如果没有指定默认值表达式,那么对于不同的数据类型:

  • 数字(numbers):0
  • 字符串(strings):空字符串
  • 数组(arrays):空数组
  • 日期(date): 1970-01-01 
  • 时间戳(DateTime):zero unix timestamp 
  • 空值(Nullable):NULL

如果定义了默认表达式,则列类型是可选的。 如果没有明确定义的类型,则使用默认的表达式类型。

示例:EventDate DEFAULT toDate(EventTime),‘Date’ 类型将用于‘EventDate’ 列

如果显式定义了数据类型和默认表达式,则将使用类型转换函数将此表达式转换为指定的类型。

示例:Hits UInt32 DEFAULT 0 和 Hits UInt32 DEFAULT toUInt32(0)含义相同

可以将默认表达式定义为表常量和列中的任意表达式。 创建和更改表格结构时,它会检查表达式是否不包含循环。 对于INSERT,它将检查表达式是否可解析。

DEFAULT子句

默认值。 如果INSERT查询未指定相应的列,则将通过计

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值