Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики - страница 19
Во многих СУБД применяется транзакционная модель, что это такое – узнаем чуть позже, но сейчас необходимо понимать, что при запуске операций изменения, вставки, удаления данных эти изменения появятся в базе только после выполнения команды COMMIT.
Я использовал только команду INSERT и не применял ни COMMIT, ни ROLLBACK, но данные все равно появились в базе. Почему так вышло?
Некоторые редакторы поддерживают режим автофиксации изменений, то есть выполняют команду COMMIT за вас.
Если я перечислю не все колонки, какие есть в таблице, куда мы добавляем данные, будет ошибка?
Необязательно. В колонки, которые вы не перечислили, будет добавлено пустое (NULL) значение, ошибка возникнет только если на колонках этой таблицы есть ограничение NOT NULL или первичный ключ.
Контрольные вопросы и задания для самостоятельного выполнения
День четвертый
Шаг 16. Обновление данных – UPDATE
Введение
Мы научились добавлять данные в таблицу, но очень часто возникают ситуации, когда нам необходимо обновить, пересчитать данные в одной или нескольких колонках.
Теория и практика
Обновление данных в строчках и ячейках таблицы осуществляется с помощью команды UPDATE.
Синтаксис команды
Здесь TABLE_NAME – имя таблицы, где обновляются данные.
Здесь через запятую перечислены имена колонок = значения, а после WHERE описываются условия для отбора обновляемых строк.
Примеры
Добавить к наименованию (CITYNAME) города CITY с кодом (CITYCODE) меньше 2 символ #.
К населению города с населением (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 на строки были установлены блокировки, повторное обновление не выполнилось, так как изменения не были вами зафиксированы. Об этом будет более подробная информация в книге в дальнейшем.