ClickHouse深入浅出之(二) 实战篇 (SQL基本语法和导入导出)

一、SQL基本语法

1.1、CREATE

1.1.1、CREATE DATABASE

数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。创建数据库的完整语法如下所示:
CREATE DATABASE [IF NOT EXISTS] db_name [ENGINE = engine];

如果查询中存在 IF NOT EXISTS,则当数据库已经存在时,该查询不会返回任何错误。

create database if not exists db_name;

切换数据库使用:

use db_name;

[ENGINE = engine] 表示数据库所使用的引擎类型(是的,你没看错,数据库也支持设置引擎)

数据库目前一共支持 5 种引擎,如下所示:

Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎,使用时无须刻意声明。在此数据库下可以 使用任意类型的表引擎。
Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表 
Memory:内存引擎,用于存放临时数据。此类数据库下的数据表只会停留在内存中,不会涉及任何磁盘操 作,当服务重启后数据会被清除。
Lazy:日志引擎,此类数据库下只能使用Log系列的表引擎 
MySQL:MySQL引擎,此类数据库下会自动拉取远端MySQL中的数据,并为它们创建MySQL表引擎的数据表

在绝大多数情况下都只需使用默认的数据库引擎,默认数据库的实质是物理磁盘上的一个文件目录,所以在语句执行之后,ClickHouse便会在安装路径下创建DB_TEST 数据库的文件目录

[root@bigdata04 ~]# cd /var/lib/clickhouse/data
[root@bigdata04 data]# ll
库名:db_name, 这个库的数据存储目录:/var/lib/clickhouse/data/db_name
表名:test, 这个表的数据存储目录:/var/lib/clickhouse/data/db_name/test/ 
分区:20210425,这个分区的存储目录:/var/lib/clickhouse/data/db_name/test/20210425

与此同时,在metadata路径下也会一同创建用于恢复数据库的 DB_TEST.sql 文件:

[root@bigdata04 ~]# /var/lib/clickhouse/metadata
[root@bigdata04 data]# ll

使用 SHOW DATABASES 查询,即能够返回 ClickHouse 当前的数据库列表,使用 USE 查询可以实现在多个数据库之间进行切换,而通过 SHOW TABLES 查询可以查看当前数据库的数据表列表。删除一个数据库,则需要用到DROP(别瞎搞~)。

drop database [if exists] db_name

1.1.2. CREATE TABLE

对于创建表,语法如下:

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

有三种方式创建表:

1、直接创建

create table table_name(
    id UInt16,
    name String
) engine=TinyLog;

2、创建一个与其他表有相同结构的表,属于表复制(复制表)

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

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

create table table_name1 as table_name2 engine=Memory;
desc table_name2;

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

语法:在Hive中,也支持这种语法,简称为 CTAS: create table .... as select ...

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

1.1.3. 表字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值