跳到主要内容
跳到主要内容

SHOW 语句

注意

除非开启以下设置,否则 SHOW CREATE (TABLE|DATABASE|USER) 默认会隐藏密钥等敏感信息:

此外,用户需要具备 displaySecretsInShowAndSelect 权限。

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                       │
└────────────────────────────────┘

最后,我们只获取前两个数据库的名称:

SHOW DATABASES LIMIT 2
┌─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 dbFROM db.tab 是等价的。 如果未指定数据库,则查询会返回当前数据库中的列列表。

另外还有两个可选关键字:EXTENDEDFULLEXTENDED 关键字目前没有任何效果, 仅用于与 MySQL 兼容。FULL 关键字会使输出中包含排序规则、注释和权限列。

SHOW COLUMNS 语句会生成具有以下结构的结果表:

ColumnDescriptionType
field列名String
type列的数据类型。如果查询是通过 MySQL wire 协议发出的,则会显示在 MySQL 中的等效类型名称。String
null如果列的数据类型是 Nullable,则为 YES,否则为 NOString
key如果该列是主键的一部分则为 PRI,如果是排序键的一部分则为 SOR,否则为空String
default当列类型为 ALIASDEFAULTMATERIALIZED 时,为该列的默认表达式,否则为 NULLNullable(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 dbFROM db.tab 是等价的。如果未指定数据库,查询会将当前数据库视为默认数据库。

可选关键字 EXTENDED 目前没有任何效果,仅为兼容 MySQL 而保留。

该语句会生成具有以下结构的结果表:

ColumnDescriptionType
table表的名称。String
non_unique始终为 1,因为 ClickHouse 不支持唯一性约束。UInt8
key_name索引名称,如果索引是主键索引,则为 PRIMARYString
seq_in_index对于主键索引,为列在索引中的位置,从 1 开始计数。对于数据跳过索引:始终为 1UInt8
column_name对于主键索引,为该列的名称。对于数据跳过索引:为 ''(空字符串),详见字段 "expression"。String
collation列在索引中的排序方式:升序为 A,降序为 D,未排序为 NULLNullable(String)
cardinality索引基数(索引中唯一值数量)的估计值。目前始终为 0。UInt64
sub_part始终为 NULL,因为 ClickHouse 不支持类似 MySQL 的索引前缀。Nullable(String)
packed始终为 NULL,因为 ClickHouse 不支持类似 MySQL 的打包索引。Nullable(String)
null当前未使用
index_type索引类型,例如 PRIMARYMINMAXBLOOM_FILTER 等。String
comment关于索引的附加信息,目前始终为 ''(空字符串)。String
index_comment''(空字符串),因为在 ClickHouse 中索引不能像 MySQL 那样拥有 COMMENT 字段。String
visible指示该索引是否对优化器可见,始终为 YESString
expression对于数据跳过索引,为索引表达式。对于主键索引:为 ''(空字符串)。String

Examples

在此示例中,我们使用 SHOW INDEX 语句获取表 tbl 中所有索引的信息。

SHOW INDEX FROM '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.rolessystem.role_grants

语法

SHOW [CURRENT|ENABLED] ROLES

SHOW PROFILES

SHOW PROFILES 语句返回设置配置文件列表。 要查看用户账户参数,请参阅系统表 settings_profiles

语法

SHOW [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_usagesystem.quota_usage

语法

SHOW [CURRENT] QUOTA

SHOW ACCESS

SHOW ACCESS 语句会显示所有用户角色设置配置文件等,以及它们的所有权限

语法

SHOW ACCESS

SHOW CLUSTER(S)

SHOW CLUSTER(S) 语句返回一个集群列表。 所有可用的集群都列在 system.clusters 表中。

注意

SHOW CLUSTER name 查询会显示 system.clusters 表中指定集群名称对应的 clustershard_numreplica_numhost_namehost_addressport 信息。

语法

SHOW CLUSTER '<集群名称>'
SHOW CLUSTERS [[NOT] LIKE|ILIKE '<匹配模式>'] [LIMIT <N>]

示例

SHOW CLUSTERS;
┌─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 语句返回指定设置名称对应的值。

语法

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>']

如果指定了 LIKEILIKE 子句,查询会返回所有名称匹配给定 <pattern> 的系统函数列表。

另请参阅

SHOW MERGES

SHOW MERGES 语句返回合并任务的列表。 所有合并任务都列在 system.merges 表中:

ColumnDescription
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>]

示例

SHOW MERGES;
┌─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 │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘