русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оператор CREATE VIEW


Дата добавления: 2015-07-09; просмотров: 725; Нарушение авторских прав


Оператор CREATE VIEW имеет в стандарте SQL-92 следующее формальное описание:

CREATE VIEW table_name [(field .,…) ]
AS (SELECT_operator
[WITH [CASCADED | LOCAL] CHECK OPTION ] );

Список полей (field), указываемый после имени представления, позволяет переименовать столбцы основных таблиц, используемых в запросе. Это может потребоваться в случае совпадения имен столбцов при запросах, использующих объединение таблиц; для именования вычислимых столбцов; для именования объединенных столбцов, полученных посредством соединения столбцов из двух таблиц, имеющих различные имена полей.

Оператор запроса SELECT, использующийся для построения представления, может иметь две формы:

  • расширяемую;
  • постоянную.

Расширяемая форма оператора SELECT задается как конструкция SELECT *, не ограничивая жестко список полей, извлекаемых в запрос. Это позволяет не менять синтаксис представления при изменении оператором ALTER TABLE структуры таблицы: добавлении новых столбцов или удалении столбцов. Однако это также может являться и недостатком, если SQL-операторы, использующие представление, зависят от числа, типа и имен столбцов.

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

Как будет влиять изменение основных таблиц на представление можно указать в операторе ALTER TABLE:

  • фраза RESTRICT определяет ограничение, отменяющее изменение таблицы, если на данный столбец есть ссылки в представлениях (а также в ограничениях и предикатах);
  • фраза CASCADE указывает, что все представления, использующие удаляемый столбец, также будут удалены (а также все внешние ключи, имеющие ссылки на удаляемый столбец или ограничения FOREIGN KEY).

Оператор ALTER TABLE имеет в стандарте SQL-92 следующее формальное описание:

ALTER TABLE table_name
{ ADD [COLUMN] column_name column_type [(size)]
[column_ constraint] }
| { ALTER [COLUMN] column_name
{ SET DEFAULT value } | DROP DEFAULT }
| { DROP [COLUMN] column_name RESTRICT | CASCADE }
| { ADD table_ constraint }
| { DROP CONSTRAINT constraint_name RESTRICT | CASCADE };



Поддержка оператора ALTER TABLE необходима только для полного уровня соответствия стандарту, однако, большинство коммерческих СУБД реализует этот оператор, но с некоторыми изменениями и расширениями.

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

ALTER TABLE tbl1 DROP COLUMN f2 CASCADE;

Изменение данных в представлениях Если для представления указывается оператор DELETE, INSERT или UPDATE, то все изменения происходят как над представлением, так и над основными таблицами, используемыми для создания представления. Не во все представления можно внести изменения. Так, представления могут быть изменяемыми или постоянными. Стандарт позволяет внесение изменений всегда только в одну основную таблицу. Однако большинство коммерческих СУБД позволяют вносить изменения и в две связанные между собой таблицы, но с некоторыми оговорками.     Стандарт SQL-92 определяет, что представление является изменяемым, если выполнены следующие условия:
  • запрос, используемый для создания представления, извлекает данные только из одной таблицы;
  • если в запросе, используемом для создания таблицы, в качестве таблицы выступает представление, то оно также должно быть изменяемым;
  • не разрешается никаких объединений таблиц, даже самой с собой;
  • запрос, используемый для создания представления, не должен содержать вычислимых столбцов, агрегирующих функций и фраз DISTINCT, GROUP BY и HAVING;
  • в запросе, используемом для создания представления, нельзя ссылаться дважды на один и тот же столбец.
Опции [WITH [CASCADED | LOCAL] CHECK OPTION Для изменяемого представления можно указывать фразу WITH CHECK OPTION, позволяющую предотвращать "потерю строк" в представлениях. Так, если эта фразу указана, то при внесении изменений в таблицу будет проверен предикат, указанный в запросе, использованном для создания таблицы. Если предикат не возвращает значение TRUE, то изменения не будут внесены. Например, если запрос создан следующим оператором CREATE VIEW v_tbl1 AS (SELECT f1,f2, f3 FROM tbl1 WHERE f2>100) WITH CHECK OPTION;, то вставка строки не будет произведена: INSERT INTO v_tbl1 (f1,f2,f3) VALUES (1,50,'abc');. Фраза WITH CHECK OPTION может быть расширена до:
  • WITH CASCADED CHECK OPTION - предикаты проверяются во всех вложенных запросах;
  • WITH LOCAL CHECK OPTION- предикаты проверяются только в запросе, использованном для создания данного представления;
Так, для представления, созданного операторами CREATE VIEW v_1 AS (SELECT f1,f2, f3 FROM tbl1 WHERE f2>100);, CREATE VIEW v_2 AS (SELECT f1,f2, f3 FROM v_1 WHERE f2>50) WITH LOCAL CHECK OPTION;, добавление строки будет выполнено: INSERT INTO v_2 (f1,f2,f3) VALUES (1,30,'abc');. Эта строка будет добавлена в основную таблицу, но не будет видна в представлении, посредством которого она была добавлена. По умолчанию предполагается, что для WITH CHECK OPTION используется фраза CASCADED.


<== предыдущая лекция | следующая лекция ==>
Оператор UPDATE | Типы данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.168 сек.