CREATE VIEW Мясные_блюда




AS SELECT БЛ, Блюдо, В, Выход

FROM Блюда

WHERE Основа = 'Мясо';

которое может рассматриваться пользователем как новая таблица в базе данных.

 

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

CREATE VIEW GOODS (name, rubl, doll, evro)
as SELECT name, price, price/29.0, price/32.1 From PRODS;

 

Уничтожение ненужных представлений выполняется с помощью предложения DROP VIEW (уничтожить представление), имеющего следующий формат:

DROP VIEW представление;

 

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

Модифицирование представлений

Представление может теперь изменяться командами модификации DML, но модификация не будет воздействовать на само представление. Команды будут на самом деле перенаправлены к базовой таблице:

UPDATE SalesownSET city = 'Palo Alto'WHERE snum = 1004;

Оператор Update. Позволяет изменить строки таблицы. Синтаксис:

UPDATE <имя таблицы> SET <имя столбца>=<выражение> WHERE <условие>

 

Все строки, которые удовлетворяют условию в таблице (представлении) будут изменены: содержимое указанных столбцов будут заменены на значение выражения (в нём могут участвовать старые значения тех же строк). Можно указать несколько "присваиваний", перечислив их через запятую.

WHERE вместе с условием можно опустить. Кроме того, можно ограничить количество изменяемых строк с помощью указания слова LIMIT в конце запроса, после которого указывается максимальное число изменяемых строк.

 

Так же, как и в DELETE можно указать пониженный приоритет выполнения запроса LOW_PRIORITY.

Оператор Delete

 

Запрос для удаления строки из таблицы (представления): имеет синтаксис DELETE FROM <имя таблицы> WHERE <условие>

 

Такой запрос удалит из таблицы все строки, удовлетворяющие условию. Можно указать, сколько максимально строк удалять, указав это количество в конце, после слова LIMIT.

Между DELETE и FROM можно указать слово LOW_PRIORITY, которое показывает, что операция удаления имеет меньший приоритет, чем операции чтения из таблицы.

Слово WHERE вместе с условием можно опустить, в этом случае будут удалены все строки таблицы (если не указан LIMIT).

Именование столбцов

Иногда для удобства требуется снабжать столбцы новыми именами:

· Когда некоторые столбцы являются выводимыми, и поэтому не имеющими имен.

· Когда два или более столбцов в объединении, имеют те же имена что в их базовой таблице.

Имена, которые могут стать именами полей, даются в круглых скобках (), после имени создаваемого представления.

 

Групповые представления

Групповые представления - это представления, которые содержат предложение GROUP BY, или которые основывается на других групповых представлениях. Групповые представления могут стать превосходным способом обрабатывать полученную информацию непрерывно. Предположим, что каждый день вы должны следить за порядком номеров заказчиков, номерами продавцов, принимающих порядки, номерами порядков, средним от порядков, и общей суммой приобретений в порядках.

Чем конструировать каждый раз сложный запрос, вы можете просто создать следующее представление:

CREATE VIEW TotalfordayAS SELECT odate, COUNT (DISTINCT cnum), COUNT(DISTINCT snum), COUNT (onum), AVG(amt), SUM (amt)FROM OrdersGROUP BY odate;

Теперь вы сможете увидеть всю эту информацию с помощью простого запроса:

SELECT *FROM Totalforday;

 

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

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

 

CREATE VIEW ElitesalesforceAS SELECT b.odate, a.snum, a.sname,FROM Salespeople a, Orders bWHERE a.snum = b.snumAND b.amt =(SELECT MAX (amt)FROM Orders cWHERE c.odate = b.odate);

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

CREATE VIEW BonusAS SELECT DISTINCT snum, snameFROM Elitesalesforce aWHERE 10 < =(SELECT COUNT (*)FROM Elitesalestorce bWHERE a.snum = b.snum);

Извлечение из этой таблицы продавца, который будет получать премию - выполняется простым вопросом:

 

SELECT *FROM Bonus;


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: