数据库是数据的逻辑分组。每个数据库包含许多表和视图。表是存放数据的地方,由结构化的行和列组成。视图是依赖于表的保存的查询。当访问视图时,会在后台执行查询并返回结果。本文介绍了如何通过可视化和 SQL 命令两种方式管理数据库和表。
数据库
每个数据库都属于一个账户。用户被授予权限,可访问属于自己帐户的数据库。
创建数据库
- 在 ByteHouse 控制台上,单击数据库页签。
- 单击新建>创建库按钮。

- 在新建数据库弹窗中,输入数据库名称和描述。

您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令创建数据库。
CREATE DATABASE my_database01;
注意
数据库名称中只能包含 字母数字 字符 a-z 0-9
和 下划线 _
。所有名称将自动转换为 小写 。
设置默认数据库
设置了默认数据库后,您在执行查询表操作时,不需要指定数据库名称,系统将自动使用默认数据库查询。
- 在 ByteHouse 控制台上,单击租户管理页签,单击参数设置,查看默认参数。
- 单击默认数据库行的编辑按钮。

- 从下拉列表中选择默认数据库。
- 单击确定。
您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,设置默认数据库。
SET DEFAULT DATABASE my_database01;
例如,如果您将默认数据库设置为 my_database01
,且在 my_database01
中有一个名为 demo_table
的表,您可以这样查询:
SELECT * FROM demo_table;
如果您未设置默认数据库,则需按照以下命令查询:
SELECT * FROM my_database01.demo_table;
删除数据库
- 在 ByteHouse 控制台上,单击数据库页签。
- 在搜索栏输入目标数据库名称,单击搜索按钮。
- 单击数据库名称,进入当前数据库管理页面。

- 单击当前数据库管理页面中的
...
按钮。 - 单击删除数据库按钮。

- 在弹窗中确认需删除的数据库,单击确定,即可删除当前数据库。
您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,删除指定数据库。
DROP DATABASE my_database01;
表
表是存储数据的地方,每个表属于一个数据库。您可以通过可视化页面、SQL 命令、或者导入数据多种方式创建表。
ByteHouse 中的表支持配置不同类型的属性:
属性 | 描述 |
---|
表名称 | 必选。自定义表名称。命名规则如下: - 名称只能包含字母,数字和下划线"_"。
- 最多 128 个字符。
|
描述 | 可选。表具体描述,您可为计算组添加自定义描述,便于后续区分使用。 |
引擎 | 表引擎决定数据的存储和访问方式。目前仅支持 CnchMergeTree 。可视化建表默认使用CnchMergeTree ,无需配置此项。 |
排序键 | 必选。如果未指定主键,则以列作为主键。按键排序用于决定数据在数据库中的实际存储方式。用户使用按键排序最多可以指定 5 列。 |
分区键 | 可选。分区键用于决定表中的每行属于哪个数据分区,它将一个大的表分成一些小的部分。创建表时,您可使用分区键定义分区,合理的分区可以极大减少查询时所需扫描的数据量。ByteHouse 支持将分区键设置为时间字段和非时间字段,您可在创建表时按需设置。 |
过期时间 TTL | 可选。数据保留的具体时间长短,如果通过可视化建表操作,可按需设置天数。 注意 设置过期时间 TTL 后,一旦数据的时限超过保留时间,系统将会自动删除表。 |
唯一键 | 可选。确保用户可以查询唯一键的最新值。 |
分桶键 | 可选。对于每一个表或分区,通过指定分桶键 (Cluster Key) 进一步细分成桶,对列中的数据进行哈希,进行更细粒度的划分,从而提高查询和采样效率。 |
主键 | 可选。主键用于组织数据文件,对数据表中每条记录的唯一标识进行约束。主键必须包含“唯一”值,不能包含“空”值。一个数据表只能有一个主键。 |
采样键 | 可选定义采样键可以获取某个采样数据的分区。如果指定,则必须包含在排序键中。采样表达式的结果必须是无符号整数。 |
注意
- 除采样键外,数据表创建后,排序键、分区键等无法被更改,请谨慎配置。
- 创建表后,只能从表属性中更新 保留时间 。创建后仍然可以添加列。
创建表
表始终在数据库中创建。当未指定数据库时,ByteHouse 将根据用户的首选项使用默认数据库。
- 在 ByteHouse 控制台上,单击数据库页签。
- 单击新建>创建表按钮。

- 在创建数据表页面,配置表属性。您可参考上述属性表中的描述配置表属性。
您可在 ByteHouse 控制台> SQL 工作表中,执行以下示例命令,创建表。您可将命令中数据库和表的名称替换为您的目标库、表名称。可参考上述属性表中的描述配置表属性。
CREATE TABLE `test_db2`.`my_table`
(
`id` UInt64,
`name` String,
`started` DateTime
)
ENGINE=`CnchMergeTree()`
PRIMARY KEY `id`
ORDER BY `id`
PARTITION BY `toYYYYMMDD`(`started`);
ByteHouse 支持将分区键设置为时间字段和非时间字段,并根据校验字段类型设计了不同的 DDL 命令。您可根据实际需要使用以下命令创建表。
如果您计划将分区键设置为时间字段,如 day、month、year 等,您可以参考以下命令创建表。
CREATE TABLE `table_name`
(
`expr` type
)
ENGINE = CnchMergeTree
PARTITION BY (toDate(toStartOfDay(toDate(`expr`))))
如果您计划将分区键设置为空,您可以参考以下命令创建表。
CREATE TABLE `table_name`
(
`expr` type
)
ENGINE = CnchMergeTree
PARTITION BY `expr`
如果您计划将分区键设置为自定义,如toYYYYMM(
expr)
,您可以参考以下命令创建表。
CREATE TABLE `table_name`
(
`expr` type
)
ENGINE = CnchMergeTree
PARTITION BY (toYYYYMM(`expr`))
更改表
- 在 ByteHouse 控制台上,单击数据库页签。
- 在搜索栏输入目标数据库名称,单击搜索按钮。
- 单击数据库名称,进入当前数据库管理页面。

- 单击数据表名称,进入当前数据表管理页面。
- 单击编辑按钮。

- 在编辑表页面,您可更改列配置。当前可视化方式更改表支持如下操作:
- 添加列;
- 删除未用作键的列;
- 修改未用作键的列,支持修改列名、数据类型、默认值、表达式、注释、是否可为空。

- 调整完成后,单击保存修改,系统将按要求更改表。
您可在 ByteHouse 控制台> SQL 工作表中,执行 ALTER
命令更改表的属性,如添加、删除列,增加注释,调整过期时间 TTL,修改表名。
添加列,删除列:
-- 添加列
ALTER TABLE my_database01.my_table ADD COLUMN new_column UInt32;
-- 删除列
ALTER TABLE my_database01.my_table DROP COLUMN old_column UInt32;
增加列注释:
ALTER TABLE my_database01.my_table COMMENT COLUMN old_column 'my comment'
调整过期时间 TTL:
-- 添加 TTL
ALTER TABLE my_database01.my_table MODIFY TTL INTERVAL 3 DAY;
-- 移除 TTL
ALTER TABLE my_database01.my_table REMOVE TTL
修改表名:
RENAME TABLE my_database01.my_table TO my_database01.new_table;
克隆表
克隆表是指使用与原始表相同的模式和数据创建新表。
- 在 ByteHouse 控制台上,单击数据库页签。
- 在搜索栏输入目标数据库名称,单击搜索按钮。
- 单击数据库名称,进入当前数据库管理页面。

- 单击数据表名称,进入当前数据表管理页面。
- 单击数据表管理页面右上方的
...
按钮。 - 单击克隆按钮。

- 在克隆表页面,选择新表所在的数据库名称,输入数据表名称,按需填写数据表描述。

说明
数据表命名规则如下:
- 名称只能包含字母,数字和下划线"_"。
- 最多 128 个字符。
- 填写完成后,单击确定,克隆数据表。系统将自动跳转至新建的克隆表页面,您可按需管理该表。
您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,克隆指定表。
CLONE TABLE orignal_db.orginal_tableINTO new_db.new_tableCOMMENT 'my newly cloned table'
删除表
- 在 ByteHouse 控制台上,单击数据库页签。
- 在搜索栏输入目标数据库名称,单击搜索按钮。
- 单击数据库名称,进入当前数据库管理页面。

- 单击数据表名称,进入当前数据表管理页面。
- 单击数据表管理页面右上方的
...
按钮。 - 单击删除数据表按钮。

- 在弹窗中确认需删除的数据表,单击确定,即可删除当前数据表。
您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,删除指定表。
DROP TABLE my_database01.my_table;
注意
当表存在有依靠表的视图时,无法删除表。删除表前,必须先删除依靠表的视图。
视图
视图其实是存储的查询。访问视图时,执行后续查询,并使用查询结果显示数据。
创建视图
您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,创建视图。
CREATE VIEW my_database01.my_view AS SELECT * FROM my_database01.my_table;
删除视图
- 在 ByteHouse 控制台上,单击数据库页签。
- 在搜索栏输入目标数据库名称,单击搜索按钮。
- 单击数据库名称,进入当前数据库管理页面。

- 单击视图页签。
- 单击视图操作列的删除按钮,删除当前视图。

您可在 ByteHouse 控制台> SQL 工作表中,执行以下命令,删除指定视图。
DROP VIEW my_database01.my_view;