Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Синтаксис оператора alter VIEW.

Поиск

ALTER

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

[DEFINER = { user | CURRENT_USER }]

[SQL SECURITY { DEFINER | INVOKER }]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

Этот оператор позволяет изменять определение (структуру) существующего представления. Синтаксис оператора подобен оператору CREATE VIEW и результат такой же, как у оператора CREATE OR REPLACE VIEW.

Для использования оператора необходимы привилегии CREATE VIEW и DROP, кроме того, необходимы привилегии SELECT на те столбцы, которые участвуют в представлении.

 

Синтаксис оператора CREATE VIEW

CREATE

[OR REPLACE]

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

[DEFINER = { user | CURRENT_USER }]

[SQL SECURITY { DEFINER | INVOKER }]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

Этот оператор создает новое представление или замещает существующее, если указано предложение OR REPLACE. Если представления не существует, то результат CREATE OR REPLACE VIEW такой же, как у CREATE VIEW. Если же представления существует, то результат CREATE OR REPLACE VIEW такой же, как у ALTER VIEW.

select_statement представляет собой выражение SELECT которое и определяет структуру представления. Выборка может производиться как из обычной таблицы, так и из другого представления.

Представления являются объектами (входят в состав) базы данных. По умолчанию новое представление создаётся в текущей базе данных. Для создания представления в определённой базе данных, необходимо в имени представления указать имя базы данных (db_name.view_name).

 

Пример создания представления

Пример создания представления v в базе данных test, определяемого выборкой всех записей для всех полей из таблицы t:

mysql> CREATE VIEW test.v AS SELECT * FROM t;

Представления и базовые таблицы находятся в одном пространстве имён базы данных. Поэтому имя представления не должно совпадать ни с именами других представлений ни с именами таблиц. Названия столбцов в представлении также должны быть уникальными в рамках данного представления. По умолчанию столбцы получают имена как в выражении выборки SELECT для представления. Для того, чтобы дать столбцам представления другие имена необходимо использовать параметр column_list при этом число элементов списка column_list должно совпадать с числом полей в выражении SELECT для представления. Порядок указания наименований в списке column_list должен совпадать с порядком указания полей в выражении SELECT для представления.

Поля, запрашиваемые в выражении SELECT, могут быть простыми ссылками на столбцы базовых таблиц, кроме того, они могут представлять собой выражения содержащие функции, константы, операторы и т.д.

Если имена таблиц и представлений в выражении SELECT приведены без указания базы данных, которой они принадлежат, то в этом случае сервер интерпретирует их как принадлежащие текущей базе данных. При создании представления можно ссылаться на таблицы или представления из других баз данных. Для этого имена таблиц и представлений должны содержать имя базы данных, которой эти таблицы и представления принадлежат.

Представление может быть создано путем использования разнообразных выражений SELECT. Выражение SELECT может содержать связи и подзапросы, использоваться с оператором UNION, и вообще не содержать ссылки на какие-либо таблицы.

Следующий пример показывает создание представления как выборку из таблицы двух её столбцов и третьего вычисляемого столбца:

mysql> CREATE TABLE t (qty INT, price INT);

mysql> INSERT INTO t VALUES(3, 50);

mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

mysql> SELECT * FROM v;

+------+-------+-------+

| qty | price | value |

+------+-------+-------+

| 3 | 50 | 150 |

+------+-------+-------+

При определении представления существуют следующие ограничения:

  • Выражение SELECT не может содержать подзапрос после предложения FROM.
  • Выражение SELECT не может ссылаться на системные или пользовательские переменные.
  • В хранимой процедуре определение представления не может ссылаться на параметры процедуры и локальные переменные.
  • При создании представления, все таблицы и представления, которые участвуют в его определении, должны существовать. Однако, после того как представление создано, допускается удаление таблиц и представлений, которые участвовали в определении представления. В этом случае при использовании представления возвращается ошибка. Для проверки определения представления можно использовать оператор CHECK TABLE.
  • При определении представления нельзя ссылаться на временные (TEMPORARY) таблицы и нельзя создать временное (TEMPORARY) представление.
  • Для представления нельзя создать триггеры.


Поделиться:


Последнее изменение этой страницы: 2016-12-27; просмотров: 168; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.132.178 (0.007 с.)