Saltar al contenido principal
INFORMATION_SCHEMA (o information_schema) es una base de datos del sistema que proporciona una vista independiente del SGBD de los metadatos de los objetos de la base de datos, de forma casi estandarizada. Por lo general, las vistas de INFORMATION_SCHEMA son menos completas que las tablas del sistema normales, pero las herramientas pueden usarlas para obtener información básica de forma transversal entre distintos SGBD. Se espera que la estructura y el contenido de las vistas de INFORMATION_SCHEMA evolucionen de forma retrocompatible; es decir, solo se añade funcionalidad nueva, pero la funcionalidad existente no se modifica ni se elimina. En cuanto a la implementación interna, las vistas de INFORMATION_SCHEMA suelen corresponder a tablas del sistema normales como system.columns, system.databases y system.tables.
SHOW TABLES FROM INFORMATION_SCHEMA;

-- o bien:
SHOW TABLES FROM information_schema;
┌─name────────────────────┐
│ COLUMNS                 │
│ KEY_COLUMN_USAGE        │
│ REFERENTIAL_CONSTRAINTS │
│ SCHEMATA                │
| STATISTICS              |
│ TABLES                  │
│ VIEWS                   │
│ columns                 │
│ key_column_usage        │
│ referential_constraints │
│ schemata                │
| statistics              |
│ tables                  │
│ views                   │
└─────────────────────────┘
INFORMATION_SCHEMA contiene las siguientes vistas: Se ofrecen vistas equivalentes que no distinguen entre mayúsculas y minúsculas, por ejemplo, INFORMATION_SCHEMA.columns, por motivos de compatibilidad con otras bases de datos. Lo mismo se aplica a todas las columnas de estas vistas: se ofrecen variantes tanto en minúsculas (por ejemplo, table_name) como en mayúsculas (TABLE_NAME).

COLUMNS

Contiene las columnas leídas de la tabla del sistema system.columns y columnas no compatibles con ClickHouse o que no tienen sentido (siempre NULL), pero que el estándar exige. Columnas:
  • table_catalog (String) — Actualmente no se utiliza.
  • table_schema (String) — Actualmente no se utiliza.
  • table_name (String) — Actualmente no se utiliza.
  • non_unique (Int32) — Actualmente no se utiliza.
  • index_schema (String) — Actualmente no se utiliza.
  • index_name (Nullable(String)) — Actualmente no se utiliza.
  • seq_in_index (UInt32) — Actualmente no se utiliza.
  • column_name (Nullable(String)) — Actualmente no se utiliza.
  • collation (Nullable(String)) — Actualmente no se utiliza.
  • cardinality (Nullable(Int64)) — Actualmente no se utiliza.
  • sub_part (Nullable(Int64)) — Actualmente no se utiliza.
  • packed (Nullable(String)) — Actualmente no se utiliza.
  • nullable (String) — Actualmente no se utiliza.
  • index_type (String) — Actualmente no se utiliza.
  • comment (String) — Actualmente no se utiliza.
  • index_comment (String) — Actualmente no se utiliza.
  • is_visible (String) — Actualmente no se utiliza.
  • expression (Nullable(String)) — Actualmente no se utiliza.
Ejemplo
Query
SELECT table_catalog,
       table_schema,
       table_name,
       column_name,
       ordinal_position,
       column_default,
       is_nullable,
       data_type,
       character_maximum_length,
       character_octet_length,
       numeric_precision,
       numeric_precision_radix,
       numeric_scale,
       datetime_precision,
       character_set_catalog,
       character_set_schema,
       character_set_name,
       collation_catalog,
       collation_schema,
       collation_name,
       domain_catalog,
       domain_schema,
       domain_name,
       column_comment,
       column_type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (table_schema = currentDatabase() OR table_schema = '')
  AND table_name NOT LIKE '%inner%' 
LIMIT 1 
FORMAT Vertical;
Response
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

Contiene columnas leídas de la tabla del sistema system.databases y columnas que no son compatibles con ClickHouse o que no tienen sentido (siempre NULL), pero que el estándar requiere. Columnas:
  • catalog_name (String) — El nombre de la base de datos.
  • schema_name (String) — El nombre de la base de datos.
  • schema_owner (String) — Nombre del propietario del esquema, siempre 'default'.
  • default_character_set_catalog (Nullable(String)) — NULL, no se admite.
  • default_character_set_schema (Nullable(String)) — NULL, no se admite.
  • default_character_set_name (Nullable(String)) — NULL, no se admite.
  • sql_path (Nullable(String)) — NULL, no se admite.
Ejemplo
Query
SELECT catalog_name,
       schema_name,
       schema_owner,
       default_character_set_catalog,
       default_character_set_schema,
       default_character_set_name,
       sql_path
FROM information_schema.schemata
WHERE schema_name ILIKE 'information_schema' 
LIMIT 1 
FORMAT Vertical;
Response
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

Contiene las columnas leídas de la tabla del sistema system.tables. Columnas:
  • table_catalog (String) — El nombre de la base de datos en la que se encuentra la tabla.
  • table_schema (String) — El nombre de la base de datos en la que se encuentra la tabla.
  • table_name (String) — Nombre de la tabla.
  • table_type (String) — Tipo de tabla. Valores posibles:
    • BASE TABLE
    • VIEW
    • FOREIGN TABLE
    • LOCAL TEMPORARY
    • SYSTEM VIEW
  • table_rows (Nullable(UInt64)) — El número total de filas. NULL si no se pudo determinar.
  • data_length (Nullable(UInt64)) — El tamaño de los datos en disco. NULL si no se pudo determinar.
  • index_length (Nullable(UInt64)) — El tamaño total de la clave primaria, los índices secundarios y todas las marcas.
  • table_collation (Nullable(String)) — La intercalación predeterminada de la tabla. Siempre utf8mb4_0900_ai_ci.
  • table_comment (Nullable(String)) — El comentario utilizado al crear la tabla.
Ejemplo
Query
SELECT table_catalog, 
       table_schema, 
       table_name, 
       table_type, 
       table_collation, 
       table_comment
FROM INFORMATION_SCHEMA.TABLES
WHERE (table_schema = currentDatabase() OR table_schema = '')
  AND table_name NOT LIKE '%inner%'
LIMIT 1 
FORMAT Vertical;
Response
Row 1:
──────
table_catalog:   default
table_schema:    default
table_name:      describe_example
table_type:      BASE TABLE
table_collation: utf8mb4_0900_ai_ci
table_comment:   

VIEWS

Contiene las columnas leídas de la tabla del sistema system.tables cuando se utiliza el motor de tabla View. Columnas:
  • table_catalog (String) — El nombre de la base de datos en la que se encuentra la tabla.
  • table_schema (String) — El nombre de la base de datos en la que se encuentra la tabla.
  • table_name (String) — Nombre de la tabla.
  • view_definition (String) — consulta SELECT de la vista.
  • check_option (String) — NONE, sin comprobación.
  • is_updatable (Enum8) — NO, la vista no es actualizable.
  • is_insertable_into (Enum8) — Indica si la vista creada está materializada. Valores posibles:
    • NO — La vista creada no está materializada.
    • YES — La vista creada está materializada.
  • is_trigger_updatable (Enum8) — NO, el trigger no es actualizable.
  • is_trigger_deletable (Enum8) — NO, el trigger no se elimina.
  • is_trigger_insertable_into (Enum8) — NO, no se insertan datos en el trigger.
Ejemplo
Query
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 table_catalog,
       table_schema,
       table_name,
       view_definition,
       check_option,
       is_updatable,
       is_insertable_into,
       is_trigger_updatable,
       is_trigger_deletable,
       is_trigger_insertable_into
FROM information_schema.views
WHERE table_schema = currentDatabase() 
LIMIT 1
FORMAT Vertical;
Response
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

KEY_COLUMN_USAGE

Contiene columnas de la tabla del sistema system.tables que están restringidas por restricciones. Columnas:
  • constraint_catalog (String) — Actualmente no se usa. Siempre es def.
  • constraint_schema (String) — El nombre del esquema (base de datos) al que pertenece la restricción.
  • constraint_name (Nullable(String)) — El nombre de la restricción.
  • table_catalog (String) — Actualmente no se usa. Siempre es def.
  • table_schema (String) — El nombre del esquema (base de datos) al que pertenece la tabla.
  • table_name (String) — El nombre de la tabla que tiene la restricción.
  • column_name (Nullable(String)) — El nombre de la columna que tiene la restricción.
  • ordinal_position (UInt32) — Actualmente no se usa. Siempre es 1.
  • position_in_unique_constraint (Nullable(UInt32)) — Actualmente no se usa. Siempre es NULL.
  • referenced_table_schema (Nullable(String)) — Actualmente no se usa. Siempre es NULL.
  • referenced_table_name (Nullable(String)) — Actualmente no se usa. Siempre es NULL.
  • referenced_column_name (Nullable(String)) — Actualmente no se usa. Siempre es NULL.
Ejemplo
Query
CREATE TABLE test (i UInt32, s String) ENGINE MergeTree ORDER BY i;
SELECT constraint_catalog,
       constraint_schema,
       constraint_name,
       table_catalog,
       table_schema,
       table_name,
       column_name,
       ordinal_position,
       position_in_unique_constraint,
       referenced_table_schema,
       referenced_table_name,
       referenced_column_name
FROM information_schema.key_column_usage 
WHERE table_name = 'test' 
FORMAT Vertical;
Response
Row 1:
──────
constraint_catalog:            def
constraint_schema:             default
constraint_name:               PRIMARY
table_catalog:                 def
table_schema:                  default
table_name:                    test
column_name:                   i
ordinal_position:              1
position_in_unique_constraint: ᴺᵁᴸᴸ
referenced_table_schema:       ᴺᵁᴸᴸ
referenced_table_name:         ᴺᵁᴸᴸ
referenced_column_name:        ᴺᵁᴸᴸ

REFERENTIAL_CONSTRAINTS

Contiene información sobre claves foráneas. Actualmente devuelve un resultado vacío (sin filas), suficiente para ofrecer compatibilidad con herramientas de terceros como Tableau Online. Columnas:
  • constraint_catalog (String) — Actualmente no se utiliza.
  • constraint_schema (String) — Actualmente no se utiliza.
  • constraint_name (Nullable(String)) — Actualmente no se utiliza.
  • unique_constraint_catalog (String) — Actualmente no se utiliza.
  • unique_constraint_schema (String) — Actualmente no se utiliza.
  • unique_constraint_name (Nullable(String)) — Actualmente no se utiliza.
  • match_option (String) — Actualmente no se utiliza.
  • update_rule (String) — Actualmente no se utiliza.
  • delete_rule (String) — Actualmente no se utiliza.
  • table_name (String) — Actualmente no se utiliza.
  • referenced_table_name (String) — Actualmente no se utiliza.

STATISTICS

Proporciona información sobre los índices de la tabla. Actualmente devuelve un resultado vacío (sin filas), lo justo para ofrecer compatibilidad con herramientas de terceros como Tableau Online.
Última modificación el 10 de junio de 2026