INFORMATION_SCHEMA
INFORMATION_SCHEMA (или: information_schema) — это системная база данных, которая предоставляет (в некотором смысле) стандартизованный, независимый от СУБД взгляд на метаданные объектов базы данных. Представления в INFORMATION_SCHEMA обычно уступают обычным системным таблицам, но инструменты могут использовать их для получения основной информации в кросс-СУБД формате. Структура и содержание представлений в INFORMATION_SCHEMA должны развиваться обратно совместимым образом, то есть добавляется лишь новая функциональность, но существующая не изменяется и не удаляется. Что касается внутренней реализации, представления в INFORMATION_SCHEMA обычно сопоставляются с обычными системными таблицами, такими как system.columns, system.databases и system.tables.
INFORMATION_SCHEMA содержит следующие представления:
Представлены эквивалентные представления без учёта регистра, например, INFORMATION_SCHEMA.columns, по причинам совместимости с другими базами данных. То же самое касается всех колонок в этих представлениях — доступны как строчные (например, table_name), так и заглавные (TABLE_NAME) варианты.
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, не поддерживается.extra(Nullable(String)) —STORED GENERATEDдля колонок типаMATERIALIZED,VIRTUAL GENERATEDдля колонок типаALIAS,DEFAULT_GENERATEDдля колонок типаDEFAULT, илиNULL.
Пример
Запрос:
Результат:
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, не поддерживается.
Пример
Запрос:
Результат:
TABLES
Содержит колонки, считанные из системной таблицы system.tables.
Колонки:
table_catalog(String) — Имя базы данных, в которой находится таблица.table_schema(String) — Имя базы данных, в которой находится таблица.table_name(String) — Имя таблицы.table_type(String) — Тип таблицы. Возможные значения:BASE TABLEVIEWFOREIGN TABLELOCAL TEMPORARYSYSTEM VIEW
table_rows(Nullable(UInt64)) — Общее количество строк. NULL, если не удалось определить.data_length(Nullable(UInt64)) — Размер данных на диске. NULL, если не удалось определить.index_length(Nullable(UInt64)) — Общий размер первичного ключа, вторичных индексов и всех меток.table_collation(Nullable(String)) — Значение по умолчанию коллации таблицы. Всегдаutf8mb4_0900_ai_ci.table_comment(Nullable(String)) — Комментарий, использованный при создании таблицы.
Пример
Запрос:
Результат:
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, данные не вставляются в триггер.
Пример
Запрос:
Результат:
KEY_COLUMN_USAGE
Содержит колонки из системной таблицы system.tables, которые ограничены ограничениями.
Колонки:
constraint_catalog(String) — В настоящее время не используется. Всегдаdef.constraint_schema(String) — Имя схемы (базы данных), к которой принадлежит ограничение.constraint_name(Nullable(String)) — Имя ограничения.table_catalog(String) — В настоящее время не используется. Всегдаdef.table_schema(String) — Имя схемы (базы данных), к которой принадлежит таблица.table_name(String) — Имя таблицы, имеющей ограничение.column_name(Nullable(String)) — Имя колонки, имеющей ограничение.ordinal_position(UInt32) — В настоящее время не используется. Всегда1.position_in_unique_constraint(Nullable(UInt32)) — В настоящее время не используется. ВсегдаNULL.referenced_table_schema(Nullable(String)) — В настоящее время не используется. Всегда NULL.referenced_table_name(Nullable(String)) — В настоящее время не используется. Всегда NULL.referenced_column_name(Nullable(String)) — В настоящее время не используется. Всегда NULL.
Пример
Результат:
REFERENTIAL_CONSTRAINTS
Содержит информацию о внешних ключах. В настоящее время возвращает пустой результат (нет строк), что достаточно для обеспечения совместимости с инструментами третьих сторон, такими как Tableau Online.
Колонки:
constraint_catalog(String) — В настоящее время не используется.constraint_schema(String) — В настоящее время не используется.constraint_name(Nullable(String)) — В настоящее время не используется.unique_constraint_catalog(String) — В настоящее время не используется.unique_constraint_schema(String) — В настоящее время не используется.unique_constraint_name(Nullable(String)) — В настоящее время не используется.match_option(String) — В настоящее время не используется.update_rule(String) — В настоящее время не используется.delete_rule(String) — В настоящее время не используется.table_name(String) — В настоящее время не используется.referenced_table_name(String) — В настоящее время не используется.
STATISTICS
Предоставляет информацию об индексах таблицы. В настоящее время возвращает пустой результат (нет строк), что достаточно для обеспечения совместимости с инструментами третьих сторон, такими как Tableau Online.
Колонки:
table_catalog(String) — В настоящее время не используется.table_schema(String) — В настоящее время не используется.table_name(String) — В настоящее время не используется.non_unique(Int32) — В настоящее время не используется.index_schema(String) — В настоящее время не используется.index_name(Nullable(String)) — В настоящее время не используется.seq_in_index(UInt32) — В настоящее время не используется.column_name(Nullable(String)) — В настоящее время не используется.collation(Nullable(String)) — В настоящее время не используется.cardinality(Nullable(Int64)) — В настоящее время не используется.sub_part(Nullable(Int64)) — В настоящее время не используется.packed(Nullable(String)) — В настоящее время не используется.nullable(String) — В настоящее время не используется.index_type(String) — В настоящее время не используется.comment(String) — В настоящее время не используется.index_comment(String) — В настоящее время не используется.is_visible(String) — В настоящее время не используется.expression(Nullable(String)) — В настоящее время не используется.