Здавалка
Главная | Обратная связь

Запит на оновлення (UPDATE ). Застосування підзапитів в запиті на оновлення



Для зміни значень в групі записів або в одному записі вказаної таблиці застосовується оператор UPDATE .

Формат оператору:

<оператор_зміни> ::=

UPDATE ім'я_таблиці SET ім'я_стовпця = <вираз>[,...n]|<значення >[,...n]

WHERE <умова_відбору>];

Параметр ім'я_таблиці є або іменем таблиці бази даних, або іменем оновлюваного представлення.

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

Значення - нове значення відповідного стовпця, сумісне з ним за типом даних

Значення – стовпець | вираз | константа | змінна; може включати стовпці лише з обновлюваної таблиці, тобто може приймати значення одного зі стовпців таблиці, що модифікується; може замінятися на значення її іншого стовпця чи виразу, що містить значення кількох її стовпців зі змінюваним включно

Речення WHERE є необов'язковим. Якщо воно опущене, значення вказаних стовпців будуть змінені у всіх рядках таблиці. Якщо речення WHERE присутнє, то оновлені будуть лише ті рядки, які задовольняють умові відбору. Виразом є нове значення відповідного стовпця; воно має бути сумісне з ним за типом даних.

Приклад.Подвоїти ціну всіх товарів у таблиці Товар.

UPDATEТоварSETТовар.Ціна = Ціна * 2;

ФразаWHERE дозволяє скоротити число оновлюваних рядків, вказуючи умови їхнього відбору. Якщо задане ключове слово WHERE і умова, то команда UPDATE застосовується тільки до тих записів, для яких вона виконується

Як умову використовують логічні вирази над константами і полями. В умовах допускаються:

- операції порівняння: > , < , >= , <= , = , <>, які можуть застосовуватися не лише до числових значень, але і до текстів і дат ( "<" означає раніше, а ">" пізніше за абеткою чи часом);

- операції перевірки поля на значення NULL: IS NULL, IS NOT NULL;

- операції перевірки на входження в діапазон: BETWEEN і NOT BETWEEN;

- операції перевірки на входження в список: IN і NOT IN;

- операції перевірки на входження підрядка: LIKE і NOT LIKE;

- окремі операції з'єднуються зв'язками AND, OR, NOT і групуються за допомогою дужок.

Приклад.Збільшити ціну товарів першого сорту на 25%.

UPDATEТовар

SETТовар.Ціна=Товар.Ціна*1.25

WHEREТовар.Сорт=‘Перший’;

За допомогою умовиWHEREможна забезпечити оновлення одного запиту у таблиці.

Приклад.Змінити назву товару «Корона Люкс» на «Корона – Солодке задоволення» встановити значення ціни 14 грн, міста і залишку – невизначене.

UPDATEТовар

SETТовар.Назва =‘Корона – Солодке задоволення’

Товар.Ціна=14, Товар.Залишок=Null,

Товар.МістоТовару= Null

WHEREТовар.Назва = ‘Корона Люкс ’;

Застосування підзапитів в операторі оновлення дає змогу оновлювати значення стовпців однієї таблиці за значеннями стовпців з інших таблиць або іншої копії тої самої таблиці. Підзапити використовуються як елементи умови WHERE, так само, як у нетривіальних запитах

Приклад. У угоді з максимальною кількістю товару збільшити число товарів на 10%

UPDATEУгода

SETУгода.Кількість = Угода.Кількість*1.1

WHEREУгода.Кількість =

(SELECTMax(Угода1.Кількість)

FROMУгода AS Угода1);

Конструкція підзапитів така сама, як при застосуванні у основному запиті оператора вибірки. Якщо в фразі WHERE речень DELETE і UPDATE використовується вкладений підзапит, то у фразі FROM цього підзапиту не бажано згадувати таблицю, з якої видаляються / у якій оновлюються рядки. Аналогічно, у підзапиті речення INSERT не бажано згадувати таблицю, у яку завантажуються дані. Використання тої самої таблиці у запиті і підзапиті допустиме, якщо це не порушує цілісності даних

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.