clickhouse的SQL参考——(四)对库和表的常见操作

参考资料

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

版本:v20.11

由于官方对这些小项的介绍很简短,于是对其进行了整理归纳。

目录

库和表的轻量级操作查询

use语句

RENAME语句

DESCRIBE TABLE语句

EXISTS语句

ATTACH语句

DETACH语句

show语句

SHOW CREATE TABLE

SHOW DATABASES

SHOW PROCESSLIST

SHOW TABLES

SHOW DICTIONARIES

SHOW GRANTS

SHOW USERS

SHOW CREATE USER

SHOW ROLES

SHOW CREATE ROLE

SHOW POLICIES

SHOW CREATE ROW POLICY

SHOW QUOTAS

SHOW QUOTA

SHOW CREATE QUOTA

SHOW PROFILES

SHOW CREATE SETTINGS PROFILE

 

库和表的非轻量级操作查询

INSERT INTO语句

约束

使用SELECT结果进行插入

性能考量

CHECK TABLE语句

如果数据已损坏

TRUNCATE语句

DROP语句

DROP DATABASE

DROP TABLE

DROP DICTIONARY

DROP USER

DROP ROLE

DROP ROW POLICY

DROP QUOTA

DROP SETTINGS PROFILE

DROP VIEW


库和表的轻量级操作查询

use语句

USE db

用于设置当前会话使用的数据库。

如果在查询中未明确定义数据库,则使用当前数据库搜索表。

由于没有会话概念,因此在使用HTTP协议时无法进行此查询。

RENAME语句

重命名一个或多个表。

RENAME TABLE [db11.]name11 TO [db12.]name12, [db21.]name21 TO [db22.]name22, ... [ON CLUSTER cluster]

重命名表是一项轻量级操作。

如果在TO之后指定另一个数据库,那么该表被移植该数据库。但是,数据库的目录必须位于同一文件系统中(否则,将返回错误)。

如果您在一个查询中重命名多个表,因为该操作并不是原子性操作,因此可能会出现部分执行的情况。其他会话中查询可能会产生错误:Table ... doesn't exist ...

DESCRIBE TABLE语句

DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

返回以下字符串类型的列:

  • name — 列名
  • type— 列类型
  • default_type — 默认表达式(DEFAULT,MATERIALIZED或ALIAS)中使用的条款。 如果未指定默认表达式,则该列包含一个空字符串。
  • default_expression — DEFAULT子句中指定的值。
  • comment_expression — 描述信息

嵌套的数据结构以“expanded”格式输出。 每列分别显示,名称后加点号。

EXISTS语句

EXISTS [TEMPORARY] [TABLE|DICTIONARY] [db.]name [INTO OUTFILE filename] [FORMAT format]

返回UInt8类型的单列,如果表或数据库不存在,则返回单个值0;如果存在,则返回单个值1。

ATTACH语句

ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]

此查询语句结构与CREATE相同,但是:

  • 不使用单词CREATE,而是ATTACH.
  • 查询不会在磁盘上创建数据,而是假定数据已经在适当的位置,只是将有关表的信息添加到服务器。执行ATTACH查询后,服务器将知道该表存在。

如果该表之前是分离的(DETACH),则意味着该表的结构已知,可以使用简化语句而不用指定表结构。

启动服务器时使用此查询。 服务器将表元数据存储为带有ATTACH查询的文件,该文件仅在启动时运行(系统表除外,系统表是在服务器上显式创建的)。

DETACH语句

DETACH TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

从服务器中删除表“name”的存在,服务器再次查询后将不知道该表存在。

这不会删除表格的数据或元数据。 在下一次启动服务器时,服务器将读取元数据并再次查找该表。

同样,可以使用ATTACH查询重新连接“detached”表(系统表除外,没有为系统表存储元数据)。

show语句

SHOW CREATE TABLE

--返回单个String类型的“ statement”列,其中包含单个值–用于创建指定对象的CREATE查询。
SHOW CREATE [TEMPORARY] [TABLE|DICTIONARY] [db.]table [INTO OUTFILE filename] [FORMAT format]

SHOW DATABASES

--打印所有数据库的列表。
SHOW DATABASES [LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]

--该语句与以下查询返回结果相同:
SELECT name FROM system.databases [WHERE name LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]

--获取名称中包含符号序列“de”的数据库名称
SHOW DATABASES LIKE '%de%'
┌─name────┐
│ default │
└─────────┘

--以不区分大小写的方式获取数据库名称,名称中包含符号序列“de”
SHOW DATABASES ILIKE '%DE%'
┌─name────┐
│ default │
└─────────┘

--获取名称中不包含符号序列“de”的数据库名称
SHOW DATABASES NOT LIKE '%de%'
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ system                         │
│ test                           │
│ tutorial                       │
└────────────────────────────────┘


--从数据库名称获取前两行:
SHOW DATABASES LIMIT 2
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ default                        │
└────────────────────────────────┘

SHOW PROCESSLIST

--输出system.processes表的内容,该表包含当前正在处理的查询列表,但SHOW PROCESSLIST查询除外
--和SELECT * FROM system.processes返回结果相同 
SHOW PROCE
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aiky哇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值