SELECT FROM INFORMATION_SCHEMA
Содержание раздела
Поддерживается в версиях: 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