28.3.49 Таблица 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.6.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.