- цей оператор оновлює значення одного чи кількох стовпчиків у вибраних рядках однієї таблиці.
В операторі вказується цільова таблиця, яку потрібно модифікувати, при цьому користувач повинен мати дозвіл на оновлення таблиці і кожного конкретного стовпчика.
Секція WHERE відбирає рядки таблиці, які необхідно оновити.
В секції SET вказується, які стовпчики потрібно оновити, і для них задаються нові значення.
Наступний оператор UPDATE змінює величину кредиту для клієнта і закріплює його за новим працівником:
9). Збільшити кредит для компанії „Рога і копита” до 6000 грн. і закріпити її за Івановим (ідентифікатор працівника 109)
9). UPDATE Clienty
SET Credit = 6000,
Prodavec = 109
WHERE Firma = ‘Рога і копита’
- цей оператор оновлює один рядок таблиці клієнта.
Умови відбору секції WHERE оператора UPDATE повністю аналогічні умова відбору в операторах SELECT і DELETE.
Оператор UPDATE може одночасно оновити кілька рядка, які відповідають умові відбору:
10). Перевести всіх працівників із стебницької філії (код філії 12) в трускавецьку (код 11) і збільшити їхні особисті плани продаж на 10%.
10). UPDATE Pracivnyky
SET Filia = 11,
Plan = 1.1 * Plan
WHERE Filia = 12
- секція WHERE відбирає набір рядків таблиці Pracivnyky, в яких оновлюються стовпчики Filia та Plan.
Оператор UPDATE виконується так: всі рядки таблиці Pracivnyky по черзі перевіряються на відповідність умові відбору. Рядки, для яких умова відбору виконується (має значення TRUE), - оновлюються, а ті рядки, для яких умова відбору не виконується (результат має значення FALSE або NULL) – не оновлюються.
Такий оператор UPDATE приводить до пошуку тих рядків, які потрібно оновити – тому він називається пошуковий.
Секція SET в операторі UPDATE – це список операцій присвоєння, відокремленнях комами.
В кожній операції визначається цільовий стовпчик, який необхідно оновити, і вказується нове значення для цього стовпчика. Кожний цільовий стовпчик повинен входити у список лише один раз: не повинно бути двох операцій присвоєння для одного і того самого цільового стовпчика.
Вираз в операції присвоєння може бути будь-яким допустимим SQL- виразом, результат якого має тип даних що відповідає цільовому стовпчику. Необхідно, щоб значення виразу обчислювалося на основі значень лише того рядка, який в даний момент оновлюється в цільовій таблиці. Вираз не може включати в себе жодної статистичної функції та жодного підлеглого запиту.
Якщо вираз в операції присвоєння містить звертання до одного із стовпчиків цільової таблиці, то для обчислення виразу використовується значення цього стовпчика, яке було перед оновленням: так, в прикладі 10). присвоєння
Plan = 1.1 * Plan
Те ж саме справедливо і для звертань до стовпчиків в секції WHERE:
11). Збільшити план продаж на 10% для тих працівників, в яких план продаж менший 10000 грн.
11). UPDATE Pracivnyky
SET Plan = 1.1 * Plan
WHERE Plan < 10000
В умові відбору Plan < 10000 секції WHERE та в виразі 1.1 * Plan із секції SET значення стовпчика Plan – те, яке було перед оновленням.
12). Збільшити план продаж на 10% для тих працівників, які недовиконали план, і накласти на них штраф в розмірі 5% від раніше встановленого плану.
12).а). UPDATE Pracivnyky
SET Plan = 1.1 * Plan,
Shtraf = 0.05 * Plan
WHERE Prodano < Plan
12).б). UPDATE Pracivnyky
SET Shtraf = 0.05 * Plan,
Plan = 1.1 * Plan
WHERE Prodano < Plan
- запити 12).а) та 12).б) – еквівалентні (приводять до однакових результатів), тому що і в умові відбору Prodano < Plan і в виразах
1.1 * Plan
та
0.05 * Plan
із операцій присвоєння секції SET значення стовпчика Plan береться те, яке було до оновлення, а отже порядок запису присвоєнь в секції SET – не має ніякого значення, він може бути довільним.