SQL запрос на изменение значения полей в таблице бызы данных.

Для изменения значений полей используется команда UPDATE.

UPDATE [LOW_PRIORITY] [IGNORE] название_таблицы 
    SET название_поля1=новое_значение1,название_поля2=новое_значение2,...
    [WHERE условное_выражение] 
    [ORDER BY ...]
    [LIMIT количество_записей]
  • UPDATE — заменит значения текущих полей таблицы на новые значения.
  • SET — устанавливает поля которые надо изменить и их новые значения, которые нужно присвоить этим полям.
  • WHERE (необязательный) — дополнительные условия указывающие какие записи надо изменить. Если WHERE не указан, изменены будут все записи.
  • ORDER BY — позволяет сортировать записи по определенному полю при выборе из базы данных.
  • LIMIT (необязательный) — устанавливает численное ограничение на количество изменяемых ячеек.
  • LOW_PRIORITY (необязательный) — при указании этого параметра выполнение команды UPDATE задержится, пока другие клиенты читают таблицу. Необходимо для снижения нагрузки на базу, в случае сильной загруженности системы.
  • IGNORE — заставляет сервер понижать рейтинг определенных типов ошибок и вместо этого генерировать предупреждения. Для оператора с несколькими строками понижение уровня ошибки до предупреждения может разрешить обработку строки. В противном случае IGNORE оператор переходит к следующей строке, а не прерывается.

Для примера представим себе таблицу с календарем, полем «год» и плавающей датой нового года.

Изменение всех записей поля «year» таблицы «calendar» на определенное значение:

UPDATE calendar SET year=2023;

#Полей может быть несколько
UPDATE calendar SET year=2023, old_year=2022;

Пример запроса с WHERE который изменяет определенную запись:

# Обновляем значение относительно того же поля
UPDATE calendar SET year=2023 WHERE year=2022;

# Обновляем значение относительно поля new_year
UPDATE calendar SET year=2023 WHERE new_year='14 Января';

При изменении значения поля можно использовать его текущее значение:

UPDATE calendar SET year=year+1;

#запрос может содержать несколько полей (выражения вычисляются слева направо)
UPDATE calendar SET year=year+1, old_year=year-2, next_year=year+1;

Ограничиваем количество записей:

UPDATE calendar SET year=2023;
LIMIT 10;

Сортируем по месяцам:

UPDATE calendar SET year=2023 ORDER BY mouth ASC;

#или в обратном порядке
UPDATE calendar SET year=2023 ORDER BY mouth DESC;

Понижаем приоритет, игнорируем ошибки (у этих двух режимов есть свои тонкости, подробнее о которых можно почитать в документации):

UPDATE LOW_PRIORITY IGNORE calendar SET year=2023;