К населению города с населением (PEOPLES) больше 1 000 000 добавить 10.
У всех у людей MAN с именем (FIRSTNAME) Алексей поменять имя на Максим.
У всех у людей с телефоном (PHONENUM), заканчивающихся на 3, поменять имя (FIRSTNAME) на Александр.
Применение обновления UPDATE возможно также без использования предиката WHERE, в этом случае обновятся все строки указанной таблицы в заданных колонках.
Пример, который не нужно выполнять, но обязательно следует изучить.
Обнулить колонку PEOPLES в таблице CITY.
Во всей таблице значение колонки PEOPLES будет равно 0.
Важные замечания
Команда обновления данных UPDATE тоже должна завершаться выполнением COMMIT – фиксацией изменений, либо ROLLBACK – откатом изменений.
При выполнении обновления данных следует быть предельно аккуратным и внимательным: последующее восстановление измененных данных, возврат таблицы к состоянию до выполнения UPDATE очень часто бывает затруднителен.
Команда UPDATE TABLE set column1 = val1, columnn = valn без инструкции WHERE обновит значения во всех строчках таблицы TABLE колонок column1, column, будьте особо осторожны при выполнении таких команд.
Вопросы учеников
Если мы обновляем текстовое поле, необходимо ли значение писать в одинарных кавычках?
Да, при обновлении текстовых данных необходимо заключать значения в одинарные кавычки.
Приведите пример обновления данных типа DATE.
Пример: обновите даты выпуска автомобилей LADA на 01.01.2010.
Я выполнил команду UPDATE, попытался выполнить ее повторно из другого окна, но ничего не получилось и программа зависла, в чем причина?
Причина в том, что вы забыли зафиксировать изменения с помощью команды COMMIT. При выполнении первого UPDATE на строки были установлены блокировки, повторное обновление не выполнилось, так как изменения не были вами зафиксированы. Об этом будет более подробная информация в книге в дальнейшем.
Контрольные вопросы и задания для самостоятельного выполнения
1. Сколько строк обновит команда UPDATE AUTO SET MARK = «BMW» WHERE 1=0?
2. Добавить 1 к возрасту людей (MAN) c именем Андрей.
3. Добавить 2 к возрасту людей (MAN), чей возраст больше 19 лет.
4. К имени людей (MAN), чей телефон содержит 915, добавить префикс 915.
5. У всех у людей (MAN) с телефоном, чей возраст больше 22 лет, поменять имя на Роман.
Шаг 17. Удаление данных – DELETE
Введение
Иногда некоторые данные нам необходимо удалять из таблиц. Для этого в языке SQL есть специальная команда – DELETE.
Теория и практика
Команда DELETE.
Синтаксис
Здесь Имя таблицы – имя таблицы, из которой мы удаляем строки, WHERE – условие для отбора строк, которые мы удаляем.
Примеры
Удалить записи из таблицы CITY1 с кодами городов CITYCODE 7, 9.
Удалить из таблицы AUTO1 все автомобили BMW (MARK).
Удалить из таблицы AUTO1 все автомобили с датой выпуска больше 01.01.2017.
Завершите выполнение командой COMMIT для фиксации изменений.
Важные замечания
Данная команда может удалить записи только в одной заданной таблице.
Команда DELETE также должна завершаться инструкцией COMMIT для фиксации изменений в базе.
Следует помнить, что язык SQL в ORACLE поддерживает механизм транзакций, поэтому модификации данных, в том числе и операции удаления, чаще всего необходимо завершать командой СOMMIT или ROLLBACK.
COMMIT – для фиксации изменений;
ROLLBACK – для отката изменений.
Команда DELETE без инструкции WHERE очищает все строки в таблице, поэтому при использовании команды DELETE надо соблюдать предельную осторожность.
Вопросы учеников
Чем отличается команда DELETE от команды DROP?
Это совершенно разные команды. Я предлагаю повторить материал на эту тему и ответить на данный вопрос самостоятельно.
Как еще можно очистить таблицу?
Для этого есть специальный оператор TRUNCATE TABLE TABLENAME. При его выполнении происходит быстрая очистка всех записей таблицы. Мы еще будем изучать эту тему в следующих шагах.
Я пытаюсь удалить записи из некоторой таблицы, но возникает ошибка.
Вероятно, есть связанные записи в другой таблице по внешнему ключу. Сначала необходимо удалить записи в связанной таблице.
Контрольные вопросы и задания для самостоятельного выполнения
1. Чем команда DELETE TABLE_NAME отличается от команды DROP TABLE TABLE_NAME?
2. Напишите команду для удаления из таблицы AUTO таких записей, где дата выпуска авто больше 2018 года.