Модификация данных, уже хранящихся в базе данных, называется обновлением. Допускается обновление как отдельных строк или всех строк в таблице, так и их определенного подмножества. Каждому столбцу можно присвоить новое значение отдельно; остальные столбцы изменены не будут.
Для обновления существующих строк используйте команду UPDATE команда. Для этого требуются следующие сведения:
Название таблицы и имя обновляемого столбца
Новое значение столбца
Условие, определяющее обновляемую строку (или строки)
Напомним из раздела Глава 2.2 что язык SQL, как правило, не предоставляет уникальный идентификатор для строк. Следовательно, не всегда возможно напрямую указать, какую именно строку следует обновить. Вместо этого задаются условия, которым должна соответствовать строка для выполнения операции обновления. Только при наличии в таблице первичного ключа (независимо от того, был ли он объявлен явно) можно однозначно адресовать отдельные строки, выбирая условие, соответствующее первичному ключу. Графические инструменты доступа к базам данных опираются на этот факт, позволяя редактировать строки индивидуально.
Например, данная команда обновляет все записи в таблице products, имеющие цену 5, устанавливая значение цены равным 10:
UPDATE products SET price = 10 WHERE price = 5;
В результате выполнения данной операции может быть обновлено ноль, одна или несколько строк. Попытка обновления, не затрагивающая ни одной строки, не является ошибкой.
Рассмотрим данную команду более подробно. Сначала указывается ключевое слово
UPDATE за которым следует имя таблицы. Как обычно,
имя таблицы может быть квалифицировано именем схемы, в противном случае поиск осуществляется
в соответствии с установленным путем. Далее следует ключевое слово SET за которым
следуют имя столбца, знак равенства и новое значение столбца. Новое значение столбца может быть любым скалярным выражением, а не только константой. Например, если необходимо увеличить цену всех товаров на 10%, можно использовать команду:
UPDATE products SET price = price * 1.10;
Как можно заметить, выражение для нового значения может ссылаться на текущие значения в строке. Мы также опустили WHERE предложение.
Если оно опущено, это означает, что обновлению подлежат все строки таблицы.
Если оно указано, обновляются только те строки, которые соответствуют
WHERE условию. Обратите внимание, что знак равенства
в SET предложение представляет собой операцию присваивания, в то время как аналогичное предложение в WHERE предложении является оператором сравнения, однако
это не создает двусмысленности. Разумеется,
WHERE условие не обязательно должно быть проверкой на равенство. Доступно множество других операторов (см. Глава 2.6). При этом выражение
должно возвращать логический результат.
В одной команде
UPDATE можно обновить несколько столбцов, указав список
присваиваний в предложении SET . Например:
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;