set имя_столбца = 'значение'
[where условие];
В следующем примере значение столбца QTY таблицы ORDERS_TBL устанавливается равным 1 для записи с ORD_NUM, равным '23А16' (последнее специфицируется с помощью ключевого слова WHERE).
UPDATE ORDERS_TBL
SET QTY
WHERE ORD_NUM = '23A16';
I строка обновлена.
Следующий пример отличается от предыдущего только отсутствием параметра, заданного ключевым словом WHERE.
UPDATE ORDERSJTBL SET QTY = 1;
11 строк обновлены.
Как видите, здесь было обновлено 11 строк. В данном случае значение столбца QTY было установлено равным 1 для всех строк таблицы ORDERS_TBL. Вы действительно хотели получить такой результат? В отдельных случаях это может быть и так, но на самом деле оператор UPDATE без ключевого слова WHERE используется исключительно редко.
При использовании оператора UPDATE без ключевого слова WHERE нужно быть исключительно внимательным При отсутствии заданных ключевым словом WHERE условий данные в соответствующем столбце будут обновлены для всех строк данных
Теперь давайте разберемся с тем, как обновить с помощью операгора UPDATE несколько столбцов сразу. Рассмотрим синтаксис подходящего оператора.
update имя_таблицы
set столбец! = 'значение'
[, столбецЗ = 'значение']
[, столбецЗ = 'значение'] [where условие];
Обратите внимание на использование ключевого слова SET' оно одно, а описаний столбцов - несколько. Описания столбцов разделяются запятыми К этому моменту вы, должно быть, уже почувствовали логику SQL. В операторах SQL запятая обычно используется для разделения различно! о типа аргументов.
UPDATE ORDERSJTBL
SET QTY = 1,
CUST_ID = '221' WHERE ORD_NUM = '23A16';
1 строка обновлена.
Здесь запятая использована для разделения описаний, вносимых в столбцы изменений. Опять же, использовать задающее условия выражение с ключевым словом WHERE не обязательно, но обычно необходимо.
Ключевое слово SET в операторе UPDATE используется только один раз Если необходимо обновить несколько столбцов, они разделяются запятыми.
Для удаления данных из таблиц используется команда DELETE. Команда DELETE предназначена не для того, чтобы удалять значения отдельных столбцов, а для того, чтобы удалять целые записи. Оператор DELETE следует применять с осторожностью - слишком уж безотказно он работает.
Чтобы удалить одну или несколько записей из таблицы, используйте следующий синтаксис оператора DELETE.
delete from имя_схемы.имя_таблицы
[where условие];
DELETE FROM ORDERS_TBL
WHERE ORD_NUM = '23A16';
1 строка удалена.
Здесь следует обратить внимание на выражение с ключевым словом WHERE. При удалении строк из таблицы это выражение представляет собой очень важную часть оператора DELETE. Оператор DELETE без ключевого слова WHERE может понадобиться вам крайне редко. Если вы им воспользуетесь, результат будет подобен следующему:
DELETE FROM ORDERS_TBL; 11 строк удалены.
Если ключевое слово WHERE в операторе DELETE опущено, будут удалены все строки таблицы. Поэтому примите за правило всегда использовать ключевое слово WHERE в операторе DELETE.
Перед тем, как использовать операторы DELETE и UPDATE по отношению к таблицам нашей базы данных, было бы неплохо поучиться использовать эти операторы с той временной таблицей, которую мы с вами создали ранее на основе данных одной из таблиц базы данных.
Вы ознакомились с тремя основными командами языка манипуляций данными (DML) - операторами INSERT, UPDATE и DELETE. Вы смогли убедиться, что это достаточно мощная часть SQL, дающая пользователю базы данных возможность пополнять таблицы новыми данными, обновлять или удалять уже имеющиеся данные.
Очень важные уроки общения с базами данных можно получить, если пренебречь внимательным отношением к ключевому слову WHERE. С помощью ключевого слова WHERE в операторах SQL задаются условия отбора, в частности, в операторах UPDATE и DELETE с его помощью определяются строки данных, которые будут обрабатываться в ходе транзакции. При отсутствии ключевого слова WHERE будут обработаны все строки, что для базы данных может оказаться разрушительным. Защитите свои данные, и будьте внимательны при работе с данными.
После всех вышеприведенных предостережений относительно операторов UPDATE и DELETE я вообще опасаюсь их использовать. Если я вдруг изменю все данные в таблице из-за пропущенного ключевого слова WHERE, есть ли какая-либо возможность отменить эти изменения?
Для таких серьезных опасений оснований нет, поскольку у вас имеется не слишком много возможностей для непоправимых изменений в базе данных, хотя для восстановления данных может потребоваться немалое время. На следующем уроке мы рассмотрим вопросы управления транзакциями, когда операции изменения данных можно либо принять как окончательные, либо отменить.