SELECT FROM INFORMATION_SCHEMA

Содержание раздела
  1. Синтаксис
    1. Поддерживаемые ключевые слова
    2. Поддерживаемые типы соединений
  2. Варианты ответа
  3. Ограничения
  4. Примеры
    1. Запрос списка всех логических БД окружения
    2. Запрос информации о сущностях логической БД
    3. Запрос информации о столбцах сущности
    4. Запрос имен, типов и столбцов логических сущностей

Поддерживается в версиях: 7.7 / 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0 / 5.8 / 5.7 / 5.6 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.

Запрос возвращает метаданные объектов логической схемы из системных представлений. Возможности запроса отличаются от возможностей SELECT-запроса к логическим БД.

Обратиться к системному представлению можно по имени или имени с префиксом. Если префикс указан, он игнорируется. Например, information_schema.ver3_system_tables трактуется как information_schema.tables.

Синтаксис

SELECT { * | column_name [AS column_alias][, ... ] }
FROM [INFORMATION_SCHEMA.][prefix]system_view_name [AS view_alias]

Параметры:

column_name

Имя выбираемого столбца. Если нужно выбрать все столбцы, укажите символ *.

column_alias

Псевдоним столбца.

prefix

Произвольный префикс имени системного представления system_view_name. Может содержать латинские буквы, цифры и символы подчеркивания в любом порядке.

Если указан, игнорируется системой.

system_view_name

Имя системного представления, из которого запрашивается информация. Возможные значения см. в разделе Системные представления.

Префикс INFORMATION_SCHEMA перед именем опционален, если до этого был выполнен запрос USE INFORMATION_SCHEMA.

view_alias

Псевдоним системного представления.

Поддерживаемые ключевые слова

В запросе поддерживаются следующие ключевые слова, которые должны быть указаны в порядке их перечисления:

  • JOIN ON — соединяет данные нескольких системных представлений;
  • WHERE — задает условия выбора данных;
  • GROUP BY — группирует данных;
  • ORDER BY — сортирует данных;
  • LIMIT — задает количество строк ответа.

Строковые значения столбцов в условии WHERE указывайте в верхнем регистре или с использованием ключевого слова UPPER, например, так: WHERE table_schema = 'MARKETING' или WHERE table_schema = UPPER('marketing').

Поддерживаемые типы соединений

Поддерживаются следующие типы соединений системных представлений:

  • [INNER] JOIN — внутреннее соединение,
  • LEFT [OUTER] JOIN — левое внешнее соединение,
  • RIGHT [OUTER] JOIN — правое внешнее соединение,
  • FULL [OUTER] JOIN — полное внешнее соединение,
  • CROSS JOIN — декартово произведение, ключи соединения не указываются.

Варианты ответа

В ответе возвращается:

  • объект ResultSet c выбранными записями при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Ограничения

  • Не допускается комбинирование подзапросов к INFORMATION_SCHEMA с подзапросами к логическим базам данных.
  • Параметризованные запросы к информационной схеме не поддерживаются.
  • Строковые значения столбцов в условии WHERE должны быть указаны в верхнем регистре или с использованием ключевого слова UPPER.

Примеры

Запрос списка всех логических БД окружения

Запрос списка всех логических БД окружения с лексической сортировкой по возрастанию:

SELECT schema_name FROM information_schema.schemata ORDER BY schema_name

Запрос информации о сущностях логической БД

Запрос информации о логических сущностях логической БД MARKETING:

SELECT * FROM information_schema.tables
WHERE table_schema = 'MARKETING'

Запрос информации о столбцах сущности

Запрос информации о столбцах логической таблицы SALES:

-- обращение к представлению columns по его имени
SELECT * FROM information_schema.columns
WHERE table_schema = upper('marketing') and table_name = upper('sales');

-- обращение к представлению columns по его имени с указанием префикса "table"
SELECT * FROM information_schema.tablecolumns
WHERE table_schema = upper('marketing') and table_name = upper('sales');

Запрос имен, типов и столбцов логических сущностей

Запрос списка имен, типов и столбцов логических сущностей окружения:

SELECT TC.table_schema, TC.table_name, TT.table_type, TC.column_name
FROM information_schema.columns AS TC
JOIN information_schema.tables AS TT
  ON TC.table_schema = TT.table_schema and TC.table_name = TT.table_name
ORDER BY TC.table_schema, TC.table_name