跳至主要内容

SHOW 语句

注意:SHOW CREATE (TABLE|DATABASE|USER) 会隐藏机密信息,除非 display_secrets_in_show_and_select 服务器设置 已启用,format_display_secrets_in_show_and_select 格式设置 已启用,并且用户具有 displaySecretsInShowAndSelect 权限。

SHOW CREATE TABLE | DICTIONARY | VIEW | DATABASE

SHOW [CREATE] [TEMPORARY] TABLE|DICTIONARY|VIEW|DATABASE [db.]table|view [INTO OUTFILE filename] [FORMAT format]

返回一个类型为 String 的单列,其中包含用于创建指定对象的 CREATE 查询。

SHOW TABLE tSHOW DATABASE dbSHOW CREATE TABLE|DATABASE t|db 的含义相同,但 SHOW tSHOW db 不受支持。

请注意,如果您使用此语句获取系统表的 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]

示例

获取数据库名称,其名称中包含符号序列“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 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>]

示例

获取表名称,其名称中包含符号序列“user”。

SHOW TABLES FROM system LIKE '%user%'

结果

┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘

不区分大小写地获取表名称,其名称中包含序列“user”。

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 [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 等效。如果未指定数据库,则查询将返回当前数据库中的列列表。

可选关键字 EXTENDED 目前没有任何效果,它仅出于与 MySQL 的兼容性而存在。

可选关键字 FULL 会导致输出包含 collation、comment 和 privilege 列。

该语句生成一个具有以下结构的结果表

  • field - 列的名称 (String)
  • type - 列的数据类型。如果查询是通过 MySQL 线路协议进行的,则会显示 MySQL 中等效的类型名称。 (String)
  • null - 如果列数据类型是 Nullable,则为 YES,否则为 NO (String)
  • key - 如果列是主键的一部分,则为 PRI,如果列是排序键的一部分,则为 SOR,否则为空 (String)
  • default - 如果列的类型为 ALIASDEFAULTMATERIALIZED,则为列的默认表达式,否则为 NULL。 (Nullable(String))
  • extra - 其他信息,目前未使用 (String)
  • collation - (仅当指定了 FULL 关键字时) 列的排序规则,始终为 NULL,因为 ClickHouse 没有按列的排序规则 (Nullable(String))
  • comment - (仅当指定了 FULL 关键字时) 列的注释 (String)
  • privilege - (仅当指定了 FULL 关键字时) 您对该列拥有的权限,目前不可用 (String)

示例

获取表“order”中以“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 [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

显示表的索引列表。

此语句主要用于与 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 的兼容性而存在。

该语句生成一个具有以下结构的结果表

  • 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 - 索引类型,例如 PRIMARYMINMAXBLOOM_FILTER 等。 (String)
  • comment - 有关索引的其他信息,目前始终为 ''(空字符串)。 (String)
  • index_comment - ''(空字符串),因为 ClickHouse 中的索引不能具有 COMMENT 字段(如 MySQL)。 (String)
  • visible - 如果索引对优化器可见,则始终为 YES。 (String)
  • expression - 对于数据跳过索引,索引表达式。对于主键索引:''(空字符串)。 (String)

示例

获取表“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

SHOW PROCESSLIST [INTO OUTFILE filename] [FORMAT format]

输出 system.processes 表的内容,该表包含当前正在处理的查询列表,但不包括 SHOW PROCESSLIST 查询。

SELECT * FROM system.processes 查询返回有关所有当前查询的数据。

提示(在控制台中执行)

$ watch -n1 "clickhouse-client --query='SHOW PROCESSLIST'"

SHOW GRANTS

显示用户的权限。

语法

SHOW GRANTS [FOR user1 [, user2 ...]] [WITH IMPLICIT] [FINAL]

如果未指定用户,则查询将返回当前用户的权限。

WITH IMPLICIT 修饰符允许显示隐式授予的权限(例如,GRANT SELECT ON system.one)。

FINAL 修饰符将用户及其授予的角色(具有继承性)的所有权限合并。

SHOW CREATE USER

显示在 用户创建 时使用的参数。

语法

SHOW CREATE USER [name1 [, name2 ...] | CURRENT_USER]

SHOW CREATE ROLE

显示在 角色创建 时使用的参数。

语法

SHOW CREATE ROLE name1 [, name2 ...]

SHOW CREATE ROW POLICY

显示在 行策略创建 时使用的参数。

语法

SHOW CREATE [ROW] POLICY name ON [database1.]table1 [, [database2.]table2 ...]

SHOW CREATE QUOTA

显示在创建 配额 时使用的参数。

语法

SHOW CREATE QUOTA [name1 [, name2 ...] | CURRENT]

SHOW CREATE SETTINGS PROFILE

显示在创建 设置配置文件 时使用的参数。

语法

SHOW CREATE [SETTINGS] PROFILE name1 [, name2 ...]

SHOW USERS

返回 用户账户 名称列表。要查看用户账户参数,请参阅系统表 system.users

语法

SHOW USERS

SHOW ROLES

返回 角色 列表。要查看其他参数,请参阅系统表 system.rolessystem.role_grants

语法

SHOW [CURRENT|ENABLED] ROLES

SHOW PROFILES

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

语法

SHOW [SETTINGS] PROFILES

SHOW POLICIES

返回指定表的 行策略 列表。要查看用户账户参数,请参阅系统表 system.row_policies

语法

SHOW [ROW] POLICIES [ON [db.]table]

SHOW QUOTAS

返回 配额 列表。要查看配额参数,请参阅系统表 system.quotas

语法

SHOW QUOTAS

SHOW QUOTA

返回所有用户或当前用户的 配额 使用情况。要查看其他参数,请参阅系统表 system.quotas_usagesystem.quota_usage

语法

SHOW [CURRENT] QUOTA

SHOW ACCESS

显示所有 用户角色配置文件 等以及它们的所有 授权

语法

SHOW ACCESS

SHOW CLUSTER(S)

返回集群列表。所有可用的集群都列在 system.clusters 表中。

注意

SHOW CLUSTER name 查询显示此集群的 system.clusters 表的内容。

语法

SHOW CLUSTER '<name>'
SHOW CLUSTERS [[NOT] LIKE|ILIKE '<pattern>'] [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;

结果

Row 1:
──────
cluster: test_shard_localhost
shard_num: 1
shard_weight: 1
replica_num: 1
host_name: localhost
host_address: 127.0.0.1
port: 9000
is_local: 1
user: default
default_database:
errors_count: 0
estimated_recovery_time: 0

SHOW SETTINGS

返回系统设置及其值的列表。从 system.settings 表中选择数据。

语法

SHOW [CHANGED] SETTINGS LIKE|ILIKE <name>

子句

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 │ Seconds │ 10 │
│ connect_timeout_with_failover_ms │ Milliseconds │ 50 │
│ connect_timeout_with_failover_secure_ms │ Milliseconds │ 100 │
└─────────────────────────────────────────┴──────────────┴───────┘

带有 CHANGED 子句的查询

SHOW CHANGED SETTINGS ILIKE '%MEMORY%'

结果

┌─name─────────────┬─type───┬─value───────┐
│ max_memory_usage │ UInt64 │ 10000000000 │
└──────────────────┴────────┴─────────────┘

SHOW SETTING

SHOW SETTING <name>

输出指定设置名称的设置值。

另请参阅

SHOW FILESYSTEM CACHES

SHOW FILESYSTEM CACHES

结果

┌─Caches────┐
│ s3_cache │
└───────────┘

另请参阅

SHOW ENGINES

SHOW ENGINES [INTO OUTFILE filename] [FORMAT format]

输出 system.table_engines 表的内容,其中包含服务器支持的表引擎的描述及其功能支持信息。

另请参阅

SHOW FUNCTIONS

SHOW FUNCTIONS [LIKE | ILIKE '<pattern>']

输出 system.functions 表的内容。

如果指定了 LIKEILIKE 子句,则查询将返回名称与提供的 <pattern> 匹配的系统函数列表。

另请参阅

SHOW MERGES

返回合并列表。所有合并都列在 system.merges 表中。

  • table -- 表名。
  • database -- 表所在的数据库名称。
  • estimate_complete -- 预计完成时间(以秒为单位)。
  • elapsed -- 自合并开始以来的经过时间(以秒为单位)。
  • progress -- 已完成工作的百分比(0-100%)。
  • is_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 │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘