You need to enable JavaScript to run this app.
导航
数据库表及视图
最近更新时间:2023.08.17 15:53:36首次发布时间:2021.10.22 10:06:12

数据库和表概述

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

数据库

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

创建数据库

图片

CREATE DATABASE my_database01;

注意

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

删除数据库

DROP DATABASE my_database01;

警告

删除数据库的同时将删除数据库中的所有表。

设置默认数据库

如果设置了默认数据库,则不需要在查询表前指定数据库名称。

SET DEFAULT DATABASE my_database01;

例如,如果默认数据库是my_database01,且在my_database01中有一个名为demo_table的表,您可以这样查询:

SELECT * FROM demo_table;

如果不设置默认数据库,则按下面方法查询:

SELECT * FROM my_database01.demo_table;

表是存储数据的地方。每个表属于一个数据库。表可以通过多种方式创建:通过 UI 或 SQL 手动创建,或者导入数据。
ByteHouse 中的表支持不同类型的属性:

  • 描述 - 用户注释
  • 引擎 - 表引擎决定数据的存储和访问方式。目前仅支持 CNCHMergeTree
  • 排序键 (强制)- 如果未指定主键,则以列作为主键。按键排序用于决定数据在数据库中的实际存储方式。用户使用按键排序最多可以指定 5 列。
  • 主键 (强制)- 主键通常与按键排序的作用相同,用于整理数据文件。
  • 分区键 (强制)- 分区键用于决定表中的每行属于哪个数据分区,它将一个大的表分成一些小的部分。
  • 分桶键 对于每一个表或分区,通过指定分桶键 (Cluster Key) 进一步细分成桶,对列中的数据进行哈希,进行更细粒度的划分,从而提高查询和采样效率。
  • 保留时间 (可选)- 数据保留的具体时间长短,如果通过 UI 操作,则为天数。

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

  • 唯一键 (可选)- 确保用户可以查询唯一密钥的最新值。唯一键最多只能接受 10 个值,并且不能包含空列。分为两级,即 分区 级 和 级,用于确定唯一值的粒度。
  • 采样键 (可选)- 定义采样键可以获取某个采样数据的分区。默认情况下,采样键将使用第一个主键,并且必须是按键排序/主键中的一个。

创建表

表始终在数据库中创建。当未指定数据库时,ByteHouse 将根据用户的首选项使用默认数据库。
图片
注意:也可以通过 查询 进行建表操作

CREATE TABLE `test_db2`.`my_table` 
(
    `id` UInt64,
    `name` String,
    `started` DateTime
)
ENGINE=`CnchMergeTree()`
PRIMARY KEY `id`
ORDER BY `id`
PARTITION BY `toYYYYMMDD`(`started`); 

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

更改表

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

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

图片

-- Add
ALTER TABLE my_database01.my_table ADD COLUMN new_column UInt32;

-- Drop
ALTER TABLE my_database01.my_table DROP COLUMN old_column UInt32;
  • 注释
ALTER TABLE my_database01.my_table COMMENT COLUMN old_column 'my comment'
  • 保留时间
-- Add TTL
ALTER TABLE my_database01.my_table MODIFY TTL INTERVAL 3 DAY;

-- Remove TTL
ALTER TABLE my_database01.my_table REMOVE TTL
  • 表名
RENAME TABLE my_database01.my_table TO my_database01.new_table;

删除表

DROP TABLE my_database01.my_table;

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

克隆表

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

CLONE TABLE orignal_db.orginal_tableINTO new_db.new_tableCOMMENT 'my newly cloned table'

视图

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

创建视图

图片

CREATE VIEW my_database01.my_view AS SELECT * FROM my_database01.my_table;

删除视图

DROP VIEW my_database01.my_view;