кодесурса
«SQL

Представления обновления SQL

script1adsense2code
script1adsense3code

Обновить вид

Команда SQL UPDATE VIEW может использоваться для изменения данных представления.

Все виды не обновляются. Таким образом, команда UPDATE применима не ко всем представлениям. Обновляемое представление - это такое, которое позволяет выполнять команду UPDATE над собой, не затрагивая никакую другую таблицу.

Содержание:

Когда можно обновить вид?

1 Представление определяется на основе одной и только одной таблицы.

2 Представление должно включать ПЕРВИЧНЫЙ КЛЮЧ таблицы, на основе которой было создано представление.

3 В представлении не должно быть полей, созданных из агрегатных функций.

4 Представление не должно содержать ни одного предложения DISTINCT в своем определении.

5 Представление не должно содержать ни одного предложения GROUP BY или HAVING в своем определении.

6 Представление не должно иметь никаких ПОДПИСЕЙ в своих определениях.

7 Если представление, которое вы хотите обновить, основано на другом представлении, последнее должно быть обновляемым.

8 Ни одно из выбранных выходных полей (представления) не должно использовать константы, строки или выражения значений.

Синтаксис:

 ОБНОВЛЕНИЕ <view_name> SET <column1> = <value1>, <column2> = <value2>, .....
ГДЕ <условие>;

Параметры:

название Описание
view_name Имя виртуальной таблицы или представления, где данные будут изменены.
column1, column2 Наименование столбцов таблицы.
значение1, значение2 Значения для столбцов, которые будут обновлены.
состояние Состояние или критерии.

Пример:

Образец представления: просмотр агента

Чтобы обновить представление 'agentview' со следующими условиями -

1. «Комиссия» должна быть установлена на .13 ,

2. «working_area» должно быть «Лондон»,

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

Код SQL:

UPDATE agentview
SET commission=.13
WHERE working_area=’London’;

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM agentview;

Обновляемые представления SQL

В следующем разделе мы обсуждаем, как можно обновить представление в операторе UPDATE VIEW.

Пример:

Пример таблицы: агенты

Это утверждение ниже создает обновляемое представление 'countryagent':

Код SQL:

CREATE VIEW countryagent
AS SELECT *
FROM agents
WHERE  working_area='Brisban';

Чтобы обновить столбец «комиссия» значением .13 представления «странаагент», можно использовать следующий оператор SQL:

Код SQL:

UPDATE countryagent
SET commission=.13;  

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM countryagent;

SQL обновляемые представления с использованием в операторе

В следующем разделе мы обсудим, как оператор SQL IN можно использовать в операторе UPDATE VIEW для обновления данных столбцов в представлении.

Пример:

Пример таблицы: заказы


Это утверждение ниже создает обновляемое представление 'orderindate':

Код SQL:

CREATE VIEW orderindate
AS SELECT agent_code,ord_num,cust_code,advance_amount
FROM orders
WHERE ord_date IN ('15-APR-08','15-Aug-08');

Чтобы обновить представление 'orderindate' со следующими условиями -

1. 'advance_amount' установлен на 2000,

2. 'advance_amount' должно быть 1500,

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

Код SQL:

UPDATE orderindate SET advance_amount=2000
WHERE advance_amount=1500;

Выход:

«Sql

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM orderindate;

SQL обновляемые представления с агрегатной функцией

Здесь, в следующих темах, мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если какое-либо из полей представления создано с использованием предложения AGGREGATE FUNCTION или GROUP BY.

Пример:

Пример таблицы: заказы


Это утверждение ниже создает представление 'daywiseorder':

Код SQL:

CREATE VIEW daywiseorder(ord_date,ord_count)
AS SELECT ord_date,COUNT(*)
FROM orders
GROUP BY ord_date;

Чтобы обновить представление 'daywiseorder' со следующими условиями -

1. «ord_count» установлен на 2,

2. 'ord_count' должно быть 1,

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

Код SQL:

UPDATE  daywiseorder SET ord_count=2
WHERE ord_count=1;

Замечания:

Это представление не является обновляемым. Агрегатная функция «COUNT» использовалась в определении представления, поэтому это представление не подлежит обновлению, т.е. «представление» доступно только для чтения.

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM daywiseorder;

Обновление представлений SQL с арифметическим выражением

В следующих разделах мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если любое из полей представления создано с использованием арифметического выражения.

Пример:

Образец таблицы: клиент


Это утверждение ниже создает представление «myclient»:

Код SQL:

CREATE VIEW myclient(client_name,client_no,outspercent)
AS SELECT    cust_name,cust_code
outstanding_amt*100/(opening_amt+receive_amt)
FROM customer
WHERE cust_country='USA'
AND  outstanding_amt*100/(opening_amt+receive_amt)>50;

Чтобы обновить представление «myclient» со следующим условием -

1. «превосходящий» установлен на 80,

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

Код SQL:

UPDATE myclient SET outspercent=80;

Замечания:

Это представление не является обновляемым. Арифметическое выражение было использовано в определении представления. Таким образом, это представление не может быть обновлено, то есть «представление» доступно только для чтения.

Выполнить запрос в этом представлении

Код SQL:

SELECT * FROM myclient;

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

На этой странице мы обсуждаем, что представление не может быть обновлено (с помощью оператора UPDATE VIEW), если любое из полей представления создано с использованием подзапроса.

Пример:

Пример таблицы: заказы


Пример таблицы: агенты


Это утверждение ниже создает представление «myagent»:

Код SQL:

CREATE VIEW myagent>
AS SELECT *
FROM agents
WHERE agent_code IN
(SELECT agent_code
FROM orders
WHERE ord_date='15-AUG-08');

Обновить представление «myagent» следующим условием -

1. «комиссия» установлена в .15,

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

Код SQL:

UPDATE myagent SET commission=.15;

Смотрите нашу базу данных моделей

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: Создать вид с объединением
Далее: Создать индекс

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code