Пример использования команды SELECT для работы с INFORMATION_SCHEMA.
Как было сказано ранее, информацию из базы данных INFORMATION_SCHEMA можно получить с помощью команды SELECT, обращаясь напрямую к ее таблицам. Это значит, что применимы любые полезные особенности этой команды.
Т.е. в команде SELECT могут быть указаны или использованы:
- конкретные имена таблиц и их столбцов, из которых необходимо получить данные;
- условие WHERE для получения информации с указанием необходимых условий выбора;
- группировку и сортировку результатов выбора с помощью опций GROUP BY и ORDER BY;
- объединение результатов с помощью JOIN и UNION;
- подзапросы (subqueries).
Результаты, полученные из INFORMATION_SCHEMA с помощью команды SELECT, могут быть записаны в другую таблицу с помощью команд CREATE TABLE … SELECT или INSERT … SELECT. В каких случаях это может быть полезно, рассмотрим позднее.
Примеры использования:
1. Показать имена таблиц и используемый для них storage engines в конкретной базе данных:
select table_name, engine from information_schema.tables where table_schema=’test_db’;
2. Найти все таблицы, которые имеют столбец типа “SET”:
select table_schema, table_name, column_name from information_schema.columns where data_type = ‘set’;
3. Показать сортировку по умолчанию для каждой кодировки:
select character_set_name,collation_name from information_schema.collations where is_default=’Yes’;
4. Показать количество таблиц в каждой базе данных:
select table_schema, count(*) from information_schema.tables group by table_schema;
Таблицы в базе данных INFORMATION_SCHEMA read only (только для чтения). Они не могут быть модифицированы командами INSERT, DELETE, UPDATE. Если мы попытаемся, к примеру, удалить что-то из какой-то таблицы, сервер вернет ошибку:
mysql> delete from information_schema.tables;
ERROR 1044 (42000): Access denied for user ‘root’@’localhost’ to database ‘information_schema’