SHOW CREATE TABLE | DICTIONARY | VIEW | DATABASE
这些语句会返回一个 String 类型的单列,
其中包含用于创建指定对象的 CREATE 查询语句。
SHOW [CREATE] TABLE | TEMPORARY TABLE | DICTIONARY | VIEW | DATABASE [db.]table|view [INTO OUTFILE filename] [FORMAT format]
注意
如果你使用该语句来获取系统表对应的 CREATE 查询语句,
你将会得到一个虚假的查询,它只声明了表结构,
但不能真正用于创建表。
SHOW DATABASES
该语句会列出所有数据库。
SHOW DATABASES [[NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
它与以下查询相同:
SELECT name FROM system.databases [WHERE name [NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
在此示例中,我们使用 SHOW 获取名称中包含字符序列 'de' 的数据库:
SHOW DATABASES LIKE '%de%'
┌─name────┐
│ default │
└─────────┘
我们也可以改为不区分大小写:
SHOW DATABASES ILIKE '%DE%'
┌─name────┐
│ default │
└─────────┘
或者获取名称中不包含 'de' 的数据库:
SHOW DATABASES NOT LIKE '%de%'
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ system │
│ test │
│ tutorial │
└────────────────────────────────┘
最后,我们只获取前两个数据库的名称:
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ default │
└────────────────────────────────┘
另请参阅
SHOW TABLES
SHOW TABLES 语句用于显示表列表。
SHOW [FULL] [TEMPORARY] TABLES [{FROM | IN} <db>] [[NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
如果未指定 FROM 子句,查询将返回当前数据库中的表列表。
该语句等同于以下查询:
SELECT name FROM system.tables [WHERE name [NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
在以下示例中,我们使用 SHOW TABLES 语句查找所有表名中包含 'user' 的表:
SHOW TABLES FROM system LIKE '%user%'
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
我们也可以以不区分大小写的方式进行:
SHOW TABLES FROM system ILIKE '%USER%'
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
或者查找表名中不包含字母 “s” 的表:
SHOW TABLES FROM system NOT LIKE '%s%'
┌─name─────────┐
│ metric_log │
│ metric_log_0 │
│ metric_log_1 │
└──────────────┘
最后,我们就只获取前两个表的名称:
SHOW TABLES FROM system LIMIT 2
┌─name───────────────────────────┐
│ aggregate_function_combinators │
│ asynchronous_metric_log │
└────────────────────────────────┘
另请参阅
SHOW COLUMNS
SHOW COLUMNS 语句用于显示列列表。
SHOW [EXTENDED] [FULL] COLUMNS {FROM | IN} <table> [{FROM | IN} <db>] [{[NOT] {LIKE | ILIKE} '<pattern>' | WHERE <expr>}] [LIMIT <N>] [INTO
OUTFILE <filename>] [FORMAT <format>]
数据库和表名可以用简写形式 <db>.<table> 来指定,
这意味着 FROM tab FROM db 和 FROM db.tab 是等价的。
如果未指定数据库,则查询会返回当前数据库中的列列表。
另外还有两个可选关键字:EXTENDED 和 FULL。EXTENDED 关键字目前没有任何效果,
仅用于与 MySQL 兼容。FULL 关键字会使输出中包含排序规则、注释和权限列。
SHOW COLUMNS 语句会生成具有以下结构的结果表:
| Column | Description | Type |
|---|
field | 列名 | String |
type | 列的数据类型。如果查询是通过 MySQL wire 协议发出的,则会显示在 MySQL 中的等效类型名称。 | String |
null | 如果列的数据类型是 Nullable,则为 YES,否则为 NO | String |
key | 如果该列是主键的一部分则为 PRI,如果是排序键的一部分则为 SOR,否则为空 | String |
default | 当列类型为 ALIAS、DEFAULT 或 MATERIALIZED 时,为该列的默认表达式,否则为 NULL | Nullable(String) |
extra | 其他附加信息,目前未使用 | String |
collation | (仅在指定了 FULL 关键字时)列的排序规则,始终为 NULL,因为 ClickHouse 不支持列级排序规则 | Nullable(String) |
comment | (仅在指定了 FULL 关键字时)该列的注释 | String |
privilege | (仅在指定了 FULL 关键字时)您在该列上拥有的权限,目前不可用 | String |
Examples
在此示例中,我们将使用 SHOW COLUMNS 语句获取表 'orders' 中所有列的信息,
从列名以 'delivery_' 开头的列开始:
SHOW COLUMNS FROM 'orders' LIKE 'delivery_%'
┌─field───────────┬─type─────┬─null─┬─key─────┬─default─┬─extra─┐
│ delivery_date │ DateTime │ 0 │ PRI SOR │ ᴺᵁᴸᴸ │ │
│ delivery_status │ Bool │ 0 │ │ ᴺᵁᴸᴸ │ │
└─────────────────┴──────────┴──────┴─────────┴─────────┴───────┘
另请参阅
SHOW DICTIONARIES
SHOW DICTIONARIES 语句用于显示 字典(Dictionaries) 的列表。
SHOW DICTIONARIES [FROM <db>] [LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
如果未指定 FROM 子句,查询将返回当前数据库中的字典列表。
你可以通过以下方式即可获得与 SHOW DICTIONARIES 查询相同的结果:
SELECT name FROM system.dictionaries WHERE database = <db> [AND name LIKE <pattern>] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
以下查询从 system 数据库的表列表中选取名称中包含 reg 的前两行记录。
SHOW DICTIONARIES FROM db LIKE '%reg%' LIMIT 2
┌─name─────────┐
│ regions │
│ region_names │
└──────────────┘
SHOW INDEX
显示表的主键索引和数据跳过索引(data skipping index)列表。
该语句主要是为兼容MySQL而提供。系统表 system.tables(用于主键)和 system.data_skipping_indices(用于数据跳过索引)提供了等价的信息,但以更符合 ClickHouse 原生风格的方式呈现。
SHOW [EXTENDED] {INDEX | INDEXES | INDICES | KEYS } {FROM | IN} <table> [{FROM | IN} <db>] [WHERE <expr>] [INTO OUTFILE <filename>] [FORMAT <format>]
数据库和表名可以使用缩写形式 <db>.<table> 指定,即 FROM tab FROM db 和 FROM db.tab 是等价的。如果未指定数据库,查询会将当前数据库视为默认数据库。
可选关键字 EXTENDED 目前没有任何效果,仅为兼容 MySQL 而保留。
该语句会生成具有以下结构的结果表:
| Column | Description | Type |
|---|
table | 表的名称。 | String |
non_unique | 始终为 1,因为 ClickHouse 不支持唯一性约束。 | UInt8 |
key_name | 索引名称,如果索引是主键索引,则为 PRIMARY。 | String |
seq_in_index | 对于主键索引,为列在索引中的位置,从 1 开始计数。对于数据跳过索引:始终为 1。 | UInt8 |
column_name | 对于主键索引,为该列的名称。对于数据跳过索引:为 ''(空字符串),详见字段 "expression"。 | String |
collation | 列在索引中的排序方式:升序为 A,降序为 D,未排序为 NULL。 | Nullable(String) |
cardinality | 索引基数(索引中唯一值数量)的估计值。目前始终为 0。 | UInt64 |
sub_part | 始终为 NULL,因为 ClickHouse 不支持类似 MySQL 的索引前缀。 | Nullable(String) |
packed | 始终为 NULL,因为 ClickHouse 不支持类似 MySQL 的打包索引。 | Nullable(String) |
null | 当前未使用 | |
index_type | 索引类型,例如 PRIMARY、MINMAX、BLOOM_FILTER 等。 | String |
comment | 关于索引的附加信息,目前始终为 ''(空字符串)。 | String |
index_comment | 为 ''(空字符串),因为在 ClickHouse 中索引不能像 MySQL 那样拥有 COMMENT 字段。 | String |
visible | 指示该索引是否对优化器可见,始终为 YES。 | String |
expression | 对于数据跳过索引,为索引表达式。对于主键索引:为 ''(空字符串)。 | String |
Examples
在此示例中,我们使用 SHOW INDEX 语句获取表 tbl 中所有索引的信息。
┌─table─┬─non_unique─┬─key_name─┬─seq_in_index─┬─column_name─┬─collation─┬─cardinality─┬─sub_part─┬─packed─┬─null─┬─index_type───┬─comment─┬─index_comment─┬─visible─┬─expression─┐
│ tbl │ 1 │ blf_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ BLOOM_FILTER │ │ │ YES │ d, b │
│ tbl │ 1 │ mm1_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ MINMAX │ │ │ YES │ a, c, d │
│ tbl │ 1 │ mm2_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ MINMAX │ │ │ YES │ c, d, e │
│ tbl │ 1 │ PRIMARY │ 1 │ c │ A │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ PRIMARY │ │ │ YES │ │
│ tbl │ 1 │ PRIMARY │ 2 │ a │ A │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ PRIMARY │ │ │ YES │ │
│ tbl │ 1 │ set_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ SET │ │ │ YES │ e │
└───────┴────────────┴──────────┴──────────────┴─────────────┴───────────┴─────────────┴──────────┴────────┴──────┴──────────────┴─────────┴───────────────┴─────────┴────────────┘
另请参阅
SHOW PROCESSLIST
返回 system.processes 表的内容。该表包含当前正在处理的查询列表,但不包括 SHOW PROCESSLIST 查询。
SHOW PROCESSLIST [INTO OUTFILE filename] [FORMAT format]
SELECT * FROM system.processes 查询会返回所有当前正在执行的查询信息。
提示
在控制台中执行以下命令:
$ watch -n1 "clickhouse-client --query='SHOW PROCESSLIST'"
SHOW GRANTS
SHOW GRANTS 语句用于显示某个用户所拥有的权限。
SHOW GRANTS [FOR user1 [, user2 ...]] [WITH IMPLICIT] [FINAL]
如果未指定用户,查询将返回当前用户的权限。
WITH IMPLICIT 修饰符允许显示隐式授予的权限(例如,GRANT SELECT ON system.one)。
FINAL 修饰符会合并来自用户本身及其被授予角色(包括继承)的所有权限。
SHOW CREATE USER
SHOW CREATE USER 语句会显示创建用户时使用的参数。
SHOW CREATE USER [name1 [, name2 ...] | CURRENT_USER]
SHOW CREATE ROLE
SHOW CREATE ROLE 语句会显示在创建角色时使用的参数。
SHOW CREATE ROLE name1 [, name2 ...]
SHOW CREATE ROW POLICY
SHOW CREATE ROW POLICY 语句用于显示在创建行策略时使用的参数。
SHOW CREATE [ROW] POLICY name ON [database1.]table1 [, [database2.]table2 ...]
SHOW CREATE QUOTA
SHOW CREATE QUOTA 语句显示创建配额时所使用的参数。
SHOW CREATE QUOTA [name1 [, name2 ...] | CURRENT]
SHOW CREATE SETTINGS PROFILE
SHOW CREATE SETTINGS PROFILE 语句会显示在创建设置配置文件时使用的参数。
SHOW CREATE [SETTINGS] PROFILE name1 [, name2 ...]
SHOW USERS
SHOW USERS 语句返回用户账户名称的列表。
要查看用户账户的参数,请参阅系统表 system.users。
SHOW ROLES
SHOW ROLES 语句返回一份 roles 列表。
要查看更多相关信息,
请参阅系统表 system.roles 和 system.role_grants。
SHOW [CURRENT|ENABLED] ROLES
SHOW PROFILES
SHOW PROFILES 语句返回设置配置文件列表。
要查看用户账户参数,请参阅系统表 settings_profiles。
SHOW POLICIES
SHOW POLICIES 语句返回指定表的行策略列表。
要查看用户账户参数,请参阅系统表 system.row_policies。
SHOW [ROW] POLICIES [ON [db.]table]
SHOW QUOTAS
SHOW QUOTAS 语句返回配额列表。
要查看配额的相关参数,请参阅系统表 system.quotas。
SHOW QUOTA
SHOW QUOTA 语句返回所有用户或当前用户的配额使用情况。
要查看其他参数,请参阅系统表 system.quotas_usage 和 system.quota_usage。
SHOW ACCESS
SHOW ACCESS 语句会显示所有用户、角色、设置配置文件等,以及它们的所有权限。
SHOW CLUSTER(S)
SHOW CLUSTER(S) 语句返回一个集群列表。
所有可用的集群都列在 system.clusters 表中。
注意
SHOW CLUSTER name 查询会显示 system.clusters 表中指定集群名称对应的 cluster、shard_num、replica_num、host_name、host_address 和 port 信息。
SHOW CLUSTER '<集群名称>'
SHOW CLUSTERS [[NOT] LIKE|ILIKE '<匹配模式>'] [LIMIT <N>]
┌─cluster──────────────────────────────────────┐
│ test_cluster_two_shards │
│ test_cluster_two_shards_internal_replication │
│ test_cluster_two_shards_localhost │
│ test_shard_localhost │
│ test_shard_localhost_secure │
│ test_unavailable_shard │
└──────────────────────────────────────────────┘
SHOW CLUSTERS LIKE 'test%' LIMIT 1;
┌─cluster─────────────────┐
│ test_cluster_two_shards │
└─────────────────────────┘
SHOW CLUSTER 'test_shard_localhost' FORMAT Vertical;
第 1 行:
──────
cluster: test_shard_localhost
shard_num: 1
replica_num: 1
host_name: localhost
host_address: 127.0.0.1
port: 9000
SHOW SETTINGS
SHOW SETTINGS 语句返回系统设置及其值的列表。
它从 system.settings 表中查询数据。
SHOW [CHANGED] SETTINGS LIKE|ILIKE <名称>
LIKE|ILIKE 允许为设置名称指定匹配模式。该模式可以包含 % 或 _ 等通配符。LIKE 子句区分大小写,ILIKE 子句则不区分大小写。
当使用 CHANGED 子句时,查询只会返回已从默认值被修改的设置。
使用 LIKE 子句的查询:
SHOW SETTINGS LIKE 'send_timeout';
┌─name─────────┬─type────┬─value─┐
│ send_timeout │ Seconds │ 300 │
└──────────────┴─────────┴───────┘
使用 ILIKE 子句的查询:
SHOW SETTINGS ILIKE '%CONNECT_timeout%'
┌─name────────────────────────────────────┬─type─────────┬─value─┐
│ connect_timeout │ 秒 │ 10 │
│ connect_timeout_with_failover_ms │ 毫秒 │ 50 │
│ connect_timeout_with_failover_secure_ms │ 毫秒 │ 100 │
└─────────────────────────────────────────┴──────────────┴───────┘
使用包含 CHANGED 子句的查询:
SHOW CHANGED SETTINGS ILIKE '%MEMORY%'
┌─name─────────────┬─type───┬─value───────┐
│ max_memory_usage │ UInt64 │ 10000000000 │
└──────────────────┴────────┴─────────────┘
SHOW SETTING
SHOW SETTING 语句返回指定设置名称对应的值。
另请参阅
显示文件系统缓存
┌─缓存────┐
│ s3_cache │
└───────────┘
另请参阅
SHOW ENGINES
SHOW ENGINES 语句会输出 system.table_engines 表的内容,
该表包含服务器所支持的表引擎的描述及其功能支持情况。
SHOW ENGINES [INTO OUTFILE filename] [FORMAT format]
另请参阅
SHOW FUNCTIONS
SHOW FUNCTIONS 语句会返回 system.functions 表的内容。
SHOW FUNCTIONS [LIKE | ILIKE '<pattern>']
如果指定了 LIKE 或 ILIKE 子句,查询会返回所有名称匹配给定 <pattern> 的系统函数列表。
另请参阅
SHOW MERGES
SHOW MERGES 语句返回合并任务的列表。
所有合并任务都列在 system.merges 表中:
| Column | Description |
|---|
table | 表名。 |
database | 表所属数据库的名称。 |
estimate_complete | 预计完成所需时间(秒)。 |
elapsed | 自合并开始以来已经经过的时间(秒)。 |
progress | 已完成工作的百分比(0-100)。 |
is_mutation | 如果该进程属于一次 mutation 操作,则为 1。 |
size_compressed | 已合并数据各部分的压缩数据总大小。 |
memory_usage | 合并过程的内存占用。 |
SHOW MERGES [[NOT] LIKE|ILIKE '<table_name_pattern>'] [LIMIT <N>]
┌─table──────┬─database─┬─estimate_complete─┬─elapsed─┬─progress─┬─is_mutation─┬─size_compressed─┬─memory_usage─┐
│ your_table │ default │ 0.14 │ 0.36 │ 73.01 │ 0 │ 5.40 MiB │ 10.25 MiB │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘
SHOW MERGES LIKE 'your_t%' LIMIT 1;
┌─table──────┬─database─┬─estimate_complete─┬─elapsed─┬─progress─┬─is_mutation─┬─size_compressed─┬─memory_usage─┐
│ your_table │ default │ 0.14 │ 0.36 │ 73.01 │ 0 │ 5.40 MiB │ 10.25 MiB │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘