Информационная схема

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Информационная схема (information_schema) — стандартизированный Американским национальным институтом стандартов набор представлений с метаинформацией обо всех объектах реляционной базы данных (таблицах, представлениях, столбцах, хранимых процедурах[1]).

Может быть использована для получения сведений об объектах (вместо команд SHOW в MySQL, DESCRIBE в Oracle Database или \d в PostgreSQL), например, получить количество таблиц в базе:

  SELECT count(table_name) FROM information_schema.tables;

возможный вывод:

   count 
  -------
      99
  (1 row)

или узнать сведения о столбцах таблицы alpha:

  SELECT column_name, data_type, column_default, is_nullable
        FROM information_schema.columns WHERE table_name='alpha';

возможный вывод:

   column_name | data_type | column_default | is_nullable 
  -------------+-----------+----------------+-------------
   foo         | integer   |                | YES
   bar         | character |                | YES
  (2 rows)

Реализована во многих реляционных СУБД, включая Microsoft SQL Server, MySQL, PostgreSQL, также ей оснащены встраиваемые СУБД H2 и HSQLDB; ряд систем с SQL-подобным доступом к нереляционным источникам тоже поддерживают информационную схему, в их числе Apache Hive, Presto, Trino. Среди распространённых реляционных СУБД информационная схема не реализована в Oracle Database, IBM DB2, Firebird, Informix, SAP Hana, Vertica, Adaptive Server Enterprise, SQLite, Teradata Database.

Примечания[править | править код]

  1. Melton, Jim. 19.2 Metadata, Repositories and The INFORMATION_SCHEMA // Understanding the New SQL: A Complete Guide / Jim Melton, Alan R. Simon. — Morgan Kaufmann, 1993. — P. 371. — «Metadata that applies primarily to the runtime database environment is managed through the INFORMATION_SCHEMA. [...] Metadata that applies to the information system environment as a whole is managed through the dictionary or repository.». — ISBN 9781558602458.