Оператор UPDATE змінює наявні дані в таблиці. Команда має наступний синтаксис:
За допомогою одного оператора можуть бути задані значення для будь-якої кількості стовпців. Однак в одному і тому ж операторі UPDATE можна вносити зміни в кожен стовпець зазначеної таблиці тільки один раз. При відсутності пропозиції WHERE будуть оновлені всі рядки таблиці.
Якщо стовпець допускає NULL-значення, то його можна вказати в явному вигляді. Крім того, можна замінити наявне значення на значення за замовчуванням (DEFAULT) для даного стовпця.
Дозволяється також значення одних стовпців надавати іншим стовпчиках. Нехай, наприклад, потрібно замінити жорсткі диски менше 10 Гбайт в портативних комп'ютерах. При цьому ємність нових дисків повинна становити половину обсягу RAM, наявної в даних пристроях. Це завдання можна вирішити наступним чином:
Природно, типи даних стовпців hd і ram повинні бути сумісні. Для приведення типів може використовуватися вираз CAST (пункт 5.9).
Якщо потрібно змінювати дані в залежності від вмісту деякого стовпця, можна скористатися виразом CASE (пункт 5.9) Якщо, скажімо, потрібно поставити жорсткі диски об'ємом 20 Гбайт на портативні комп'ютери з пам'яттю менше 128 Мбайт і 40 гігабайтні - на інші портативні комп'ютери, то можна написати такий запит:
Для обчислення значень стовпців допускається також використання підзапитів. Наприклад, потрібно укомплектувати всі портативні комп'ютери найшвидшими процесорами з наявних. Тоді можна написати:
Необхідно сказати декілька слів про автоінкрементіруемих шпальтах. Якщо стовпець code в таблиці Laptop визначено як IDENTITY (1,1), то наступний оператор
не буде виконано, так як автоікрементіруемое поле не допускає оновлення, і ми отримаємо відповідне повідомлення про помилку. Щоб виконати все-таки це завдання, можна поступити наступним чином. Спочатку вставити потрібний рядок, використовуючи SET IDENTITY_INSERT. після чого видалити стару рядок:
Зрозуміло, інший рядки зі значенням code = 5 в таблиці бути не повинно.