28.3.47 Таблица INFORMATION_SCHEMA VIEWS
Таблица VIEWS предоставляет информацию о представлениях в базах данных. Для доступа к этой таблице необходимо иметь привилегию SHOW VIEW.
Таблица VIEWS содержит следующие столбцы:
-
TABLE_CATALOGИмя каталога, к которому относится представление. Это значение всегда
def. -
TABLE_SCHEMAИмя схемы (базы данных), к которой относится представление.
-
TABLE_NAMEИмя представления.
-
VIEW_DEFINITIONЗапрос
SELECT, определяющий представление. Этот столбец содержит большую часть информации, отображаемой в столбцеCreate Table, которую генерирует командаSHOW CREATE VIEW. Пропустите слова доSELECTи словаWITH CHECK OPTION. Предположим, что исходный запрос был:CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
Тогда определение представления выглядит следующим образом:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
-
CHECK_OPTIONЗначение атрибута
CHECK_OPTION. Значение является одним изNONE,CASCADEилиLOCAL. -
IS_UPDATABLEMySQL устанавливает флаг, называемый флагом обновляемости представления, во время
CREATE VIEW. Флаг устанавливается вYES(true), еслиUPDATEиDELETE(и аналогичные операции) допустимы для представления. В противном случае флаг устанавливается вNO(false). СтолбецIS_UPDATABLEв таблицеVIEWSотображает состояние этого флага. Это означает, что сервер всегда знает, обновляется ли представление.Если представление не обновляемо, запросы, такие как
UPDATE,DELETEиINSERT, являются недопустимыми и будут отклонены. (Даже если представление обновляемо, в него может быть невозможно выполнить вставку; для получения подробностей см. Раздел 27.5.3, «Обновляемые и вставляемые представления».) -
DEFINERАккаунт пользователя, создавшего представление, в формате
'.user_name'@'host_name' -
SECURITY_TYPEХарактеристика представления
SQL SECURITY. Значение является одним изDEFINERилиINVOKER. -
CHARACTER_SET_CLIENTЗначение переменной сессии
character_set_clientв момент создания представления. -
COLLATION_CONNECTIONЗначение переменной сессии
collation_connectionв момент создания представления.
Примечания
MySQL разрешает различные настройки sql_mode для указания типа поддерживаемой SQL-синтаксиса. Например, вы можете использовать режим SQL ANSI, чтобы гарантировать, что MySQL правильно интерпретирует стандартный оператор конкатенации SQL, двойную черту (||), в ваших запросах. Если затем вы создаёте представление, которое конкатенирует элементы, вы можете беспокоиться о том, что изменение настройки sql_mode на значение, отличное от ANSI, может привести к тому, что представление станет недействительным. Но это не так. Независимо от того, как вы записываете определение представления, MySQL всегда хранит его одинаковым способом, в канонической форме. Вот пример, демонстрирующий, как сервер изменяет оператор конкатенации двойной черты на функцию CONCAT():
mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)
Преимущество хранения определения представления в канонической форме заключается в том, что изменения, внесённые позже в значение sql_mode, не влияют на результаты из представления. Однако дополнительным следствием является то, что комментарии перед SELECT удаляются сервером из определения.
© 2025 Oracle
Licensed under the GPLv2 License.