Оператор UPDATE в SQL: разбираем на примерах

Перевод статьи «SQL Update Statement – Update Query in SQL».

Созданная вами таблица в базе данных редко должна оставаться неизменной. Скорее всего записи в ней будут изменяться.

Для осуществления изменений в SQL есть полезный оператор — UPDATE.

Примечание. Если синтаксис, представленный в этой статье, не будет работать, загляните в документацию той реализации SQL, которой вы пользуетесь. В основном все это должно работать в разных реализациях, но могут быть какие-то отличия.

Синтаксис SQL UPDATE

Чтобы использовать метод UPDATE, сперва нужно определить, какую таблицу вы хотите обновить. Для этого мы пишем UPDATE имя_таблицы. После этого мы указываем, какие изменения мы собственно хотим внести — с помощью оператора SET. Наконец, при помощи оборота WHERE мы выбираем, какие именно записи нужно изменить.

Примечание редакции Techrocks: также рекомендуем почитать статьи «Порядок выполнения SQL-операций» и «SQL-операторы: руководство с примерами запросов».

На использовании WHERE стоит сделать ударение. Без этого оборота вы внесете одинаковые изменения во всю таблицу.

UPDATE имя_таблицы
SET изменения, которые нужно внести
WHERE оборот для выбора, какие записи нужно изменить;

Пример SQL UPDATE

У нас есть таблица users:

ID(PK)NAMEAGESTATEEMAIL
1Paul24Michiganpaul@example.com
2MollyNULLNew JerseyNULL
3Robert19New YorkNULL

В этой таблице есть несколько неполных записей. Когда пользователи предоставляют нам недостающие сведения, мы добавляем их в таблицу при помощи оператора UPDATE.

Например, у Роберта отсутствует адрес электронной почты. Обновление затронет все строки, выбранные при помощи WHERE, так что следует проявлять осторожность. Скажем, мы могли бы выбрать нужную запись для обновления, основываясь на столбце name, но имена людей не уникальны, и в нашей таблице может оказаться несколько Робертов.

Наилучший способ выбрать строку для обновления в таблице — использовать столбец с первичными ключами, значения в котором всегда уникальны. В нашем случае это столбец id.

Итак, давайте обновим email-адрес при помощи следующего запроса:

UPDATE users
SET email="robert@example.com"
WHERE id=3;

Теперь таблица будет выглядеть так:

ID(PK)NAMEAGESTATEEMAIL
1Paul24Michiganpaul@example.com
2MollyNULLNew JerseyNULL
3Robert19New Yorkrobert@example.com

Одновременное обновление нескольких столбцов

В нашей таблице в информации о Молли отсутствуют значения в двух разных столбцах. Для добавления нужных сведений мы можем воспользоваться одним оператором UPDATE, перечислив нужные дополнения через запятую:

UPDATE users
SET age=22, email="molly@example.com"
WHERE id=2;

Теперь таблица будет выглядеть так:

ID(PK)NAMEAGESTATEEMAIL
1Paul24Michiganpaul@example.com
2Molly22New Jerseymolly@example.com
3Robert19New Yorkrobert@example.com

Будьте внимательны при выборе записей для изменений

Это вопрос безопасности. В нашей таблице-примере всего три строки, но в реальной жизни у вас может быть база данных сайта или приложения с сотнями, тысячами и даже миллионами пользователей. И, поверьте, меньше всего вам надо послужить причиной проблем для стольких людей.

Поэтому, прежде чем запускать запрос UPDATE, отошлите запрос SELECT с тем же оборотом WHERE. Вы должны получить в выдаче те записи, которые хотите обновить. Если вдруг получите не то, что ожидалось, — отредактируйте WHERE.

Например, прежде чем отсылать запрос на обновление записи по пользователю Молли, мы можем послать запрос SELECT для проверки нашего оборота WHERE id=2:

SELECT * FROM users
WHERE id=2;

Результат:

ID(PK)NAMEAGESTATEEMAIL
2MollyNULLNew JerseyNULL

Этот запрос возвращает нужную запись, так что можно смело посылать запрос UPDATE для добавления данных в таблицу.

Заключение

Если у вас есть таблица с записями, рано или поздно вам, скорее всего, придется какую-нибудь запись обновить. В этой статье мы разобрали, как это делается при помощи SQL-оператора UPDATE.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх