SELECT FROM INFORMATION_SCHEMA
Запрос позволяет получить метаданные объектов логической схемы, описанные в разделе Системные представления (INFORMATION_SCHEMA). Возможности запроса отличаются от возможностей SELECT-запроса к логическим базам данных.
В ответе возвращается:
- объект ResultSet c выбранными записями при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Синтаксис
SELECT column_list FROM [INFORMATION_SCHEMA.]system_view_name [AS alias_name]
Описание параметров запроса см. ниже.
Префикс INFORMATION_SCHEMA
перед именем системного представления опционален, если до этого был выполнен запрос USE INFORMATION_SCHEMA. Для имен системных представлений и столбцов можно использовать псевдонимы.
В запросе поддерживаются следующие секции, которые должны быть указаны в порядке их перечисления:
JOIN ON
— для соединения данных нескольких системных представлений;WHERE
— для указания условий выбора данных;GROUP BY
— для группировки данных;ORDER BY
— для сортировки данных;LIMIT
— для ограничения количества возвращаемых строк.
Внимание: строковые значения столбцов в секции WHERE
необходимо указывать в верхнем регистре (например, WHERE table_schema = 'SALES'
).
Поддерживаются следующие типы соединений системных представлений:
[INNER]
— внутреннее соединение,LEFT [OUTER]
— левое внешнее соединение,RIGHT [OUTER]
— правое внешнее соединение,FULL [OUTER]
— полное внешнее соединение,CROSS
— декартово произведение, ключи соединения не указываются.
Параметры
column_list
— список выбираемых столбцов. Допустимо указывать символ*
для выбора всех столбцов;system_view_name
— имя системного представления, из которого запрашивается информация. Возможные значения см. в разделе Системные представления (INFORMATION_SCHEMA);alias_name
— псевдоним системного представления.
Ограничения
Не допускается комбинирование подзапросов к INFORMATION_SCHEMA
с подзапросами к логическим базам данных.
Примеры
Запрос списка всех логических БД окружения с лексической сортировкой по возрастанию:
SELECT schema_name FROM INFORMATION_SCHEMA.schemata
ORDER BY schema_name
Запрос информации о логических сущностях логической БД SALES
:
SELECT * FROM INFORMATION_SCHEMA.tables
WHERE table_schema = '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