17 KiB
slug |
---|
/en/operations/system-tables/information_schema |
INFORMATION_SCHEMA
INFORMATION_SCHEMA
(or: information_schema
) is a system database which provides a (somewhat) standardized, DBMS-agnostic view on metadata of database objects. The views in INFORMATION_SCHEMA
are generally inferior to normal system tables but tools can use them to obtain basic information in a cross-DBMS manner. The structure and content of views in INFORMATION_SCHEMA
is supposed to evolves in a backwards-compatible way, i.e. only new functionality is added but existing functionality is not changed or removed. In terms of internal implementation, views in INFORMATION_SCHEMA
usually map to to normal system tables like system.columns, system.databases and system.tables.
SHOW TABLES FROM INFORMATION_SCHEMA;
-- or:
SHOW TABLES FROM information_schema;
┌─name────────────────────┐
│ COLUMNS │
│ KEY_COLUMN_USAGE │
│ REFERENTIAL_CONSTRAINTS │
│ SCHEMATA │
│ TABLES │
│ VIEWS │
│ columns │
│ key_column_usage │
│ referential_constraints │
│ schemata │
│ tables │
│ views │
└─────────────────────────┘
INFORMATION_SCHEMA
contains the following views:
Case-insensitive equivalent views, e.g. INFORMATION_SCHEMA.columns
are provided for reasons of compatibility with other databases.
COLUMNS
Contains columns read from the system.columns system table and columns that are not supported in ClickHouse or do not make sense (always NULL
), but must be by the standard.
Columns:
table_catalog
(String) — The name of the database in which the table is located.table_schema
(String) — The name of the database in which the table is located.table_name
(String) — Table name.column_name
(String) — Column name.ordinal_position
(UInt64) — Ordinal position of a column in a table starting with 1.column_default
(String) — Expression for the default value, or an empty string if it is not defined.is_nullable
(UInt8) — Flag that indicates whether the column type isNullable
.data_type
(String) — Column type.character_maximum_length
(Nullable(UInt64)) — Maximum length in bytes for binary data, character data, or text data and images. In ClickHouse makes sense only forFixedString
data type. Otherwise, theNULL
value is returned.character_octet_length
(Nullable(UInt64)) — Maximum length in bytes for binary data, character data, or text data and images. In ClickHouse makes sense only forFixedString
data type. Otherwise, theNULL
value is returned.numeric_precision
(Nullable(UInt64)) — Accuracy of approximate numeric data, exact numeric data, integer data, or monetary data. In ClickHouse it is bit width for integer types and decimal precision forDecimal
types. Otherwise, theNULL
value is returned.numeric_precision_radix
(Nullable(UInt64)) — The base of the number system is the accuracy of approximate numeric data, exact numeric data, integer data or monetary data. In ClickHouse it's 2 for integer types and 10 forDecimal
types. Otherwise, theNULL
value is returned.numeric_scale
(Nullable(UInt64)) — The scale of approximate numeric data, exact numeric data, integer data, or monetary data. In ClickHouse makes sense only forDecimal
types. Otherwise, theNULL
value is returned.datetime_precision
(Nullable(UInt64)) — Decimal precision ofDateTime64
data type. For other data types, theNULL
value is returned.character_set_catalog
(Nullable(String)) —NULL
, not supported.character_set_schema
(Nullable(String)) —NULL
, not supported.character_set_name
(Nullable(String)) —NULL
, not supported.collation_catalog
(Nullable(String)) —NULL
, not supported.collation_schema
(Nullable(String)) —NULL
, not supported.collation_name
(Nullable(String)) —NULL
, not supported.domain_catalog
(Nullable(String)) —NULL
, not supported.domain_schema
(Nullable(String)) —NULL
, not supported.domain_name
(Nullable(String)) —NULL
, not supported.
Example
Query:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE (table_schema=currentDatabase() OR table_schema='') AND table_name NOT LIKE '%inner%' LIMIT 1 FORMAT Vertical;
Result:
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
Contains columns read from the system.databases system table and columns that are not supported in ClickHouse or do not make sense (always NULL
), but must be by the standard.
Columns:
catalog_name
(String) — The name of the database.schema_name
(String) — The name of the database.schema_owner
(String) — Schema owner name, always'default'
.default_character_set_catalog
(Nullable(String)) —NULL
, not supported.default_character_set_schema
(Nullable(String)) —NULL
, not supported.default_character_set_name
(Nullable(String)) —NULL
, not supported.sql_path
(Nullable(String)) —NULL
, not supported.
Example
Query:
SELECT * FROM information_schema.schemata WHERE schema_name ILIKE 'information_schema' LIMIT 1 FORMAT Vertical;
Result:
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
Contains columns read from the system.tables system table.
Columns:
table_catalog
(String) — The name of the database in which the table is located.table_schema
(String) — The name of the database in which the table is located.table_name
(String) — Table name.table_type
(Enum8) — Table type. Possible values:BASE TABLE
VIEW
FOREIGN TABLE
LOCAL TEMPORARY
SYSTEM VIEW
Example
Query:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (table_schema = currentDatabase() OR table_schema = '') AND table_name NOT LIKE '%inner%' LIMIT 1 FORMAT Vertical;
Result:
Row 1:
──────
table_catalog: default
table_schema: default
table_name: describe_example
table_type: BASE TABLE
VIEWS
Contains columns read from the system.tables system table, when the table engine View is used.
Columns:
table_catalog
(String) — The name of the database in which the table is located.table_schema
(String) — The name of the database in which the table is located.table_name
(String) — Table name.view_definition
(String) —SELECT
query for view.check_option
(String) —NONE
, no checking.is_updatable
(Enum8) —NO
, the view is not updated.is_insertable_into
(Enum8) — Shows whether the created view is materialized. Possible values:NO
— The created view is not materialized.YES
— The created view is materialized.
is_trigger_updatable
(Enum8) —NO
, the trigger is not updated.is_trigger_deletable
(Enum8) —NO
, the trigger is not deleted.is_trigger_insertable_into
(Enum8) —NO
, no data is inserted into the trigger.
Example
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 * FROM information_schema.views WHERE table_schema = currentDatabase() LIMIT 1 FORMAT Vertical;
Result:
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 (#key_column_usage)
It was added for compatibility with third party tools such as Tableau Online. Contains only the primary keys columns read from system.columns.
Columns:
constraint_catalog
(String) — The name of the catalog to which the constraint belongs. This value is alwaysdef
.constraint_schema
(String) — The name of the schema (database) to which the constraint belongs.constraint_name
(Nullable(String)) — The name of the constraint.table_catalog
(String) — The name of the catalog to which the table belongs. This value is alwaysdef
.table_schema
(String) — The name of the schema (database) to which the table belongs.table_name
(String) — The name of the table that has the constraint.column_name
(Nullable(String)) — The name of the column that has the constraint.ordinal_position
(UInt32) — The column's position within the constraint, not the column's position within the table. Column positions are numbered beginning with 1.position_in_unique_constraint
(Nullable(UInt32)) — AlwaysNULL
.referenced_table_schema
(Nullable(String)) — The name of the schema referenced by the constraint. AlwaysNULL
.referenced_table_name
(Nullable(String)) — The name of the table referenced by the constraint. AlwaysNULL
.referenced_column_name
(Nullable(String)) — The name of the column referenced by the constraint. AlwaysNULL
.
Example
CREATE TABLE test (i UInt32, s String) ENGINE MergeTree ORDER BY i;
SELECT * FROM information_schema.key_column_usage WHERE table_name = 'test' FORMAT Vertical;
Result:
Row 1:
──────
referenced_table_schema: ᴺᵁᴸᴸ
referenced_table_name: ᴺᵁᴸᴸ
referenced_column_name: ᴺᵁᴸᴸ
table_schema: default
table_name: test
column_name: i
ordinal_position: 1
constraint_name: PRIMARY
REFERENTIAL_CONSTRAINTS (#referential_constraints)
It was added for compatibility with third party tools such as Tableau Online. Reads no data by design, selects from this view will always yield an empty result set.
Columns:
constraint_catalog
(String) — The name of the catalog to which the constraint belongs.constraint_schema
(String) — The name of the schema (database) to which the constraint belongs.constraint_name
(Nullable(String)) — The name of the constraint.unique_constraint_catalog
(String) — The name of the catalog containing the unique constraint that the constraint references.unique_constraint_schema
(String) — The name of the schema containing the unique constraint that the constraint references.unique_constraint_name
(Nullable(String)) — The name of the unique constraint that the constraint references.match_option
(String) — The value of the constraintMATCH
attribute.update_rule
(String) — The value of the constraintON UPDATE
attribute.delete_rule
(String) — The value of the constraintON DELETE
attribute.table_name
(String) — The name of the table.referenced_table_name
(String) — The name of the table referenced by the constraint.