Spec-Zone.ru › MySQL 8.4

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_UPDATABLE

    MySQL устанавливает флаг, называемый флагом обновляемости представления, во время 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/information-schema-views-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API