## 数据库和表概述

数据库其实是数据的逻辑分组。每个数据库包含许多表和视图。表是存放数据的地方,由结构化的行和列组成。视图是依赖于表的保存的查询。当访问视图时,会在后台执行查询并返回结果。

## 数据库

每个数据库都属于一个帐户。用户只能访问属于自己帐户的数据库(当拥有权限时)

### 创建数据库

1149


Figure 1.0 Creating a database



**注意** :数据库名称中只能包含 **字母数字** 字符 `a-z 0-9`**下划线** `_` 。所有名称将转换为 **小写**

### 删除数据库



**注意:** 删除数据库的同时将删除数据库中的所有表

##

表是存储数据的地方。每个表属于一个数据库。表可以通过多种方式创建:通过 UI 或 SQL 手动创建,或者导入数据。

ByteHouse 中的表支持不同类型的属性:

  • **描述** - 用户注释

  • **引擎** - 表引擎决定数据的存储和访问方式。目前仅支持 `CNCHMergeTree`

  • **排序键** (强制)- 如果未指定主键,则以列作为主键。按键排序用于决定数据在数据库中的实际存储方式。用户使用按键排序最多可以指定 5 列。

  • **主键** (强制)- 主键通常与按键排序的作用相同,用于整理数据文件。

  • **分区键** (强制)- 分区键用于决定表中的每行属于哪个数据分区,它将一个大的表分成一些小的部分。

  • **分桶键** (可选) - 对于每一个表或分区,通过指定分桶键 (Cluster Key) 进一步细分成桶,对列中的数据进行哈希,进行更细粒度的划分,从而提高查询和采样效率。

  • **保留时间** (可选)- 数据保留的具体时间长短,如果通过 UI 操作,则为天数。

**注意** :一旦数据的时限超过保留时间,将会自动 **删除**

  • **唯一键** (可选)- 确保用户可以查询唯一密钥的最新值。唯一键最多只能接受 **10** 个值,并且不能包含空列。分为两级,即 **分区** 级 和 **** 级,用于确定唯一值的粒度。

  • **采样键** (可选)- 定义采样键可以获取某个采样数据的分区。默认情况下,采样键将使用第一个主键,并且必须是按键排序/主键中的一个。

### 创建表

表始终在数据库中创建。当未指定数据库时,ByteHouse 将根据用户的首选项使用默认数据库。

1280


Figure 2.0 Creating a table

**注意**:也可以通过 **查询** 进行建表操作



**注意** :创建表后,只能从表属性中更新 **保留时间** 。创建后仍然可以添加列。

### 更改表

可以通过 `ALTER` 更改表的属性:

    • 添加

    • 删除(不能删除用作键的列)

1280


Figure 2.1 Updating a table


  • **注释**


  • **保留时间**


  • **表名**



### 删除表



**注意:** 当表存在有依靠表的视图时,无法删除表。删除表前,必须先删除依靠表的视图。

### 克隆表

使用与 **原始表** 相同的模式和数据创建新表。

576


Figure 2.2 Cloning a table



## 视图

视图其实是存储的查询。访问视图时,执行后续查询,并使用查询结果显示数据。

### 创建视图

1036


Figure 3.0 Creating a view



### 删除视图