INFORMATION_SCHEMA
INFORMATION_SCHEMA
(information_schema
) — это системная база данных, содержащая представления. Используя эти представления, вы можете получить информацию о метаданных объектов базы данных. Эти представления считывают данные из столбцов системных таблиц system.columns, system.databases и system.tables.
Структура и состав системных таблиц могут меняться в разных версиях СУБД ClickHouse, но поддержка information_schema
позволяет изменять структуру системных таблиц без изменения способа доступа к метаданным. Запросы метаданных не зависят от используемой СУБД.
SHOW TABLES FROM INFORMATION_SCHEMA;
┌─name─────┐
│ COLUMNS │
│ SCHEMATA │
│ TABLES │
│ VIEWS │
└──────────┘
INFORMATION_SCHEMA
содержит следующие представления:
COLUMNS
Содержит столбцы, которые считываются из системной таблицы system.columns, и столбцы, которые не поддерживаются в ClickHouse или не имеют смысла (всегда имеют значение NULL
), но должны быть по стандарту.
Столбцы:
table_catalog
(String) — имя базы данных, в которой находится таблица.table_schema
(String) — имя базы данных, в которой находится таблица.table_name
(String) — имя таблицы.column_name
(String) — имя столбца.ordinal_position
(UInt64) — порядковый номер столбца в таблице (нумерация начинается с 1).column_default
(String) — выражение для значения по умолчанию или пустая строка.is_nullable
(UInt8) — флаг, показывающий является ли столбец типаNullable
.data_type
(String) — тип столбца.character_maximum_length
(Nullable(UInt64)) — максимальная длина в байтах для двоичных данных, символьных данных или текстовых данных и изображений. В ClickHouse имеет смысл только для типа данныхFixedString
. Иначе возвращается значениеNULL
.character_octet_length
(Nullable(UInt64)) — максимальная длина в байтах для двоичных данных, символьных данных или текстовых данных и изображений. В ClickHouse имеет смысл только для типа данныхFixedString
. Иначе возвращается значениеNULL
.numeric_precision
(Nullable(UInt64)) — точность приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. В ClickHouse это разрядность для целочисленных типов и десятичная точность для типовDecimal
. Иначе возвращается значениеNULL
.numeric_precision_radix
(Nullable(UInt64)) — основание системы счисления точности приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. В ClickHouse значение столбца равно 2 для целочисленных типов и 10 — для типовDecimal
. Иначе возвращается значениеNULL
.numeric_scale
(Nullable(UInt64)) — масштаб приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. В ClickHouse имеет смысл только для типовDecimal
. Иначе возвращается значениеNULL
.datetime_precision
(Nullable(UInt64)) — десятичная точность для данных типаDateTime64
. Для других типов данных возвращается значениеNULL
.character_set_catalog
(Nullable(String)) —NULL
, не поддерживается.character_set_schema
(Nullable(String)) —NULL
, не поддерживается.character_set_name
(Nullable(String)) —NULL
, не поддерживается.collation_catalog
(Nullable(String)) —NULL
, не поддерживается.collation_schema
(Nullable(String)) —NULL
, не поддерживается.collation_name
(Nullable(String)) —NULL
, не поддерживается.domain_catalog
(Nullable(String)) —NULL
, не поддерживается.domain_schema
(Nullable(String)) —NULL
, не поддерживается.domain_name
(Nullable(String)) —NULL
, не поддерживается.
Пример
Запрос:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE (table_schema=currentDatabase() OR table_schema='') AND table_name NOT LIKE '%inner%' LIMIT 1 FORMAT Vertical;
Результат:
Row 1:
──────
table_catalog: default
table_schema: default
table_name: describe_example
column_name: id
ordinal_position: 1
column_default:
is_nullable: 0
data_type: UInt64
character_maximum_length: ᴺᵁᴸᴸ
character_octet_length: ᴺᵁᴸᴸ
numeric_precision: 64
numeric_precision_radix: 2
numeric_scale: 0
datetime_precision: ᴺᵁᴸᴸ
character_set_catalog: ᴺᵁᴸᴸ
character_set_schema: ᴺᵁᴸᴸ
character_set_name: ᴺᵁᴸᴸ
collation_catalog: ᴺᵁᴸᴸ
collation_schema: ᴺᵁᴸᴸ
collation_name: ᴺᵁᴸᴸ
domain_catalog: ᴺᵁᴸᴸ
domain_schema: ᴺᵁᴸᴸ
domain_name: ᴺᵁᴸᴸ
SCHEMATA
Содержит столбцы, которые считываются из системной таблицы system.databases, и столбцы, которые не поддерживаются в ClickHouse или не имеют смысла (всегда имеют значение NULL
), но должны быть по стандарту.
Столбцы:
catalog_name
(String) — имя базы данных.schema_name
(String) — имя базы данных.schema_owner
(String) — имя владельца схемы, всегда'default'
.default_character_set_catalog
(Nullable(String)) —NULL
, не поддерживается.default_character_set_schema
(Nullable(String)) —NULL
, не поддерживается.default_character_set_name
(Nullable(String)) —NULL
, не поддерживается.sql_path
(Nullable(String)) —NULL
, не поддерживается.
Пример
Запрос:
SELECT * FROM information_schema.schemata WHERE schema_name ILIKE 'information_schema' LIMIT 1 FORMAT Vertical;
Результат:
Row 1:
──────
catalog_name: INFORMATION_SCHEMA
schema_name: INFORMATION_SCHEMA
schema_owner: default
default_character_set_catalog: ᴺᵁᴸᴸ
default_character_set_schema: ᴺᵁᴸᴸ
default_character_set_name: ᴺᵁᴸᴸ
sql_path: ᴺᵁᴸᴸ
TABLES
Содержит столбцы, которые считываются из системной таблицы system.tables.
Столбцы:
table_catalog
(String) — имя базы данных, в которой находится таблица.table_schema
(String) — имя базы данных, в которой находится таблица.table_name
(String) — имя таблицы.table_type
(Enum8) — тип таблицы. Возможные значения:BASE TABLE
VIEW
FOREIGN TABLE
LOCAL TEMPORARY
SYSTEM VIEW
Пример
Запрос:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (table_schema = currentDatabase() OR table_schema = '') AND table_name NOT LIKE '%inner%' LIMIT 1 FORMAT Vertical;
Результат:
Row 1:
──────
table_catalog: default
table_schema: default
table_name: describe_example
table_type: BASE TABLE
VIEWS
Содержит столбцы, которые считываются из системной таблицы system.tables, если использован движок View.
Столбцы:
table_catalog
(String) — имя базы данных, в которой находится таблица.table_schema
(String) — имя базы данных, в которой находится таблица.table_name
(String) — имя таблицы.view_definition
(String) —SELECT
запрос для представления.check_option
(String) —NONE
, нет проверки.is_updatable
(Enum8) —NO
, представление не обновляется.is_insertable_into
(Enum8) — показывает является ли представление материализованным. Возможные значения:NO
— создано обычное представление.YES
— создано материализованное представление.
is_trigger_updatable
(Enum8) —NO
, триггер не обновляется.is_trigger_deletable
(Enum8) —NO
, триггер не удаляется.is_trigger_insertable_into
(Enum8) —NO
, данные не вставляются в триггер.
Пример
Запрос:
CREATE VIEW v (n Nullable(Int32), f Float64) AS SELECT n, f FROM t;
CREATE MATERIALIZED VIEW mv ENGINE = Null AS SELECT * FROM system.one;
SELECT * FROM information_schema.views WHERE table_schema = currentDatabase() LIMIT 1 FORMAT Vertical;
Результат:
Row 1:
──────
table_catalog: default
table_schema: default
table_name: mv
view_definition: SELECT * FROM system.one
check_option: NONE
is_updatable: NO
is_insertable_into: YES
is_trigger_updatable: NO
is_trigger_deletable: NO
is_trigger_insertable_into: NO