Ответ
Для обновления данных используется оператор UPDATE. Ключевой момент — всегда явно указывать условие WHERE, чтобы не обновить все строки таблицы случайно.
Базовый синтаксис:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Пример из реальной задачи: нужно было обновить статус заказа и время его модификации для конкретного пользователя.
UPDATE orders
SET status = 'shipped',
shipped_at = NOW(),
updated_at = NOW()
WHERE user_id = 4512
AND status = 'processing'
AND id = 789;
Важные практики при работе из кода:
- Использование подготовленных выражений (Prepared Statements) для защиты от SQL-инъекций.
- Транзакции, если обновление затрагивает несколько таблиц, чтобы обеспечить целостность данных.
- Проверка количества затронутых строк после выполнения запроса, чтобы убедиться, что обновилась именно ожидаемая запись.
Пример на Python с psycopg2 (PostgreSQL):
import psycopg2
conn = psycopg2.connect(DATABASE_URL)
cur = conn.cursor()
# Безопасное обновление с параметрами
update_query = """
UPDATE users SET last_login = %s WHERE email = %s
"""
cur.execute(update_query, (datetime.now(), 'user@example.com'))
# Проверяем, была ли обновлена строка
if cur.rowcount == 0:
print("Пользователь не найден.")
conn.commit()
cur.close()
conn.close()