SQL запрос на изменение значения полей в таблице бызы данных.
Опубликовано: 13 Января 2023
Для изменения значений полей используется команда 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;