Ответ 1
Вы можете думать о том, что information_schema является "основной базой данных", которая содержит сведения обо всех других базах данных на сервере, таких как имена и типы таблиц, столбцов и пользователей.
Что такое information_schema?
INFORMATION_SCHEMA обеспечивает доступ к метаданные базы данных.
Метаданные - это данные о данных, такие как как имя базы данных или таблицы, тип данных столбца или доступ привилегии. Другие термины, которые иногда для этой информации используются данные словарь и системный каталог.
ИНФОРМАЦИЯ_SCHEMA - это информация база данных, место, где хранится информация обо всех других базы данных, которые сервер MySQL поддерживает. Внутри INFORMATION_SCHEMA существует несколько таблиц только для чтения. Они на самом деле являются представлениями, а не базовыми таблиц, поэтому нет файлов связанные с ними.
Что хранится в information_schema?
Вы можете видеть, какие вещи хранятся в information_schema и как они организованы, просмотрев эту диаграмму (для MySQL 5.0 ) или эта диаграмма (для MySQL 5.1).
Что произойдет, если я изменю information_schema?
В действительности, information_schema представляет собой коллекцию представлений только для чтения. Таким образом, его невозможно будет модифицировать и нанести какой-либо ущерб. Тем не менее, FAQ MySQL по этому вопросу имеет это, чтобы сказать:
23.7.3: Могу ли я добавить или иным образом изменить таблицы, найденные в База данных INFORMATION_SCHEMA?
Нет. Поскольку приложения могут полагаться на определенной стандартной структуры, это не следует изменять. Для этого причина, мы не можем поддерживать ошибки или другие вопросы, возникающие в результате изменение таблиц INFORMATION_SCHEMA или данных.
Это означает, что если вы обнаружите, что можете изменить информацию_схемы (что должно быть невозможно и находится в MySQL, но другие реализации SQL могут позволить это), вы должны, по крайней мере, не хотеть этого делать. Если вы можете повредить/изменить информационную_схему, вы повредите фактическую структуру (например, имена таблиц, типы столбцов) других ваших баз данных.
У каждого пользователя есть своя собственная копия information_schema?
Каждый пользователь может видеть information_schema, который относится к таблицам и базам данных, к которым у них есть доступ. Некоторые пользователи с ограниченными правами будут по-прежнему видеть информацию, но будут видеть только значения NULL для любых запросов information_schema. Однако важно помнить, что information_schema не является реальной базой данных, а просто удобным способом SQL, чтобы вы могли выбирать информацию о вашей базе данных и таблицах.
Каждый пользователь MySQL имеет право обращайтесь к этим таблицам, но можете видеть только строки в таблицах, которые соответствуют к объектам, для которых пользователь имеет правильные права доступа. В некоторых случаев (например, Столбец ROUTINE_DEFINITION в Таблица INFORMATION_SCHEMA.ROUTINES), пользователи, у которых недостаточно привилегий увидит NULL.
Где я могу найти дополнительную информацию?
- Справочное руководство по MySQL на странице information_schema (http://dev.mysql.com/doc/refman/5.0/en/information-schema.html)
- Статья FAQ MySQL по информационным_схемам (http://dev.mysql.com/doc/refman/5.0/en/faqs-information-schema.html)