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

SHOW 语句

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

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 使输出包含排序规则、注释和权限列。

该语句生成一个结果表,其结构如下

  • 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

显示表的 primary 和 data skipping 索引列表。

此语句主要为了与 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 允许为设置名称指定匹配模式。它可以包含 globs,例如 %_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 -- 如果此进程是部分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 │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘