Оператор update изменяет значения в строках таблицы. Этот оператор имеет следующую общую форму:
update tab_name
{set column_l = {expression | default | null}} [, ...n] [from tab_namel [, ...n]] [where condition]
Строки в таблице tab_name изменяются в соответствии с предложением where. Для каждой изменяемой строки оператор update изменяет значения столбцов в предложении set, присваивая соответствующим столбцам константы (или, в общем случае, выражения). Если предложение where отсутствует, оператор update изменяет все строки таблицы. (Предложение from будет рассматриваться позже в этом разделе.)
Рассмотрим пример 7.11.
Здесь оператор update изменяет в точности одну строку таблицы works_on, потому что комбинация столбцов emp_no и projectno является первичным ключом этой таблицы, и по этой причине она уникальна. Этот пример изменяет должность служащего, которая до этого была неизвестна (значение было установлено в null).
Пример 7.12 заменяет строки таблицы на значения, представленные выражением.
В этом примере будут изменены все строки таблицы project, потому что в операторе отсутствует предложение where. Измененные строки таблицы project могут быть отображены с помощью следующего оператора Transact-SQL:
select * from project;
Пример 7.13 использует внутренний запрос в предложении where оператора update. По причине использования оператора in результат данного запроса может содержать более одной строки.
Результаты примера 7.13 могут быть также получены при помощи предложения from в операторе update. Предложение from содержит имена таблиц, которые включены в оператор update. Все эти таблицы должны быть последовательно соединены (Join). В примере 7.14 показано использование предложения from. Этот пример идентичен предыдущему.
Пример 7.15 иллюстрирует использование выражения case в операторе update. Подробное обсуждение этого выражения.