INSERT / UPDATE / DELETE
Три команды, которые меняют данные (в отличие от SELECT, который только читает):
-- добавить новую строку
INSERT INTO users (name, age) VALUES ('Артур', 25);
-- изменить существующие строки
UPDATE users SET age = 26 WHERE name = 'Артур';
-- удалить строки
DELETE FROM users WHERE age < 18;
⚠️ WHERE здесь критичен.
UPDATE users SET age = 0; без WHERE изменит ВСЕ строки таблицы — забыл условие, испортил всю таблицу разом.Копнуть глубже
Безопасная привычка — сначала проверить WHERE через SELECT, и только потом превратить в UPDATE/DELETE:
-- шаг 1: проверить, какие строки попадут под условие
SELECT * FROM users WHERE age < 18;
-- шаг 2: убедился, что результат правильный — теперь меняем
DELETE FROM users WHERE age < 18;
Транзакция как страховка — оборачиваешь изменение в BEGIN/COMMIT, и если что-то пошло не так — ROLLBACK отменяет всё (подробнее — в теме «Транзакции, ACID, уровни изоляции»):
BEGIN;
DELETE FROM users WHERE age < 18;
-- посмотрел результат, всё ок
COMMIT;
-- или ROLLBACK; если что-то пошло не так
🎤 Закрыл тему, если можешь объяснить:
• что делают INSERT, UPDATE, DELETE;
• почему важно проверять WHERE перед UPDATE/DELETE в проде (если дошёл до 2-го слоя).
• почему важно проверять WHERE перед UPDATE/DELETE в проде (если дошёл до 2-го слоя).