Найти в Дзене
Информатика

Ты удалял данные без WHERE? Поздравляю — ты только что уничтожил базу 💀

Каждый раз, когда ты что-то покупаешь на Wildberries, ставишь лайк в VK или переводишь деньги через СБП — кто-то пишет в базу данных. Не «сохраняет файл». Не «обновляет таблицу в Excel».
Именно пишет. Командой. В реальном времени. Без права на ошибку. И за этим стоят три команды, которые на первый взгляд кажутся скучными — INSERT, UPDATE, DELETE. На второй взгляд — это инструменты, которыми управляют миллиардами строк данных каждый день. Представь: ты заходишь в онлайн-игру, выбираешь матч, нажимаешь «Найти игру». В этот момент сервер вставляет тебя в очередь. База данных получает команду: INSERT INTO matchmaking_queue (player_id, rank, game_mode, joined_at)
VALUES (8842301, 'Gold III', 'ranked', NOW()); Матч найден — обновляет статус: UPDATE matchmaking_queue
SET status = 'matched', match_id = 99123
WHERE player_id = 8842301; Игра закончилась — удаляет тебя из очереди: DELETE FROM matchmaking_queue
WHERE player_id = 8842301; Три команды. Один игровой сеанс. А теперь умножь это на мил
Оглавление
SQL управляет реальностью
SQL управляет реальностью

Каждый раз, когда ты что-то покупаешь на Wildberries, ставишь лайк в VK или переводишь деньги через СБП — кто-то пишет в базу данных.

Не «сохраняет файл». Не «обновляет таблицу в Excel».

Именно
пишет. Командой. В реальном времени. Без права на ошибку.

И за этим стоят три команды, которые на первый взгляд кажутся скучными — INSERT, UPDATE, DELETE. На второй взгляд — это инструменты, которыми управляют миллиардами строк данных каждый день.

Сначала — немного о том, что происходит за экраном

Представь: ты заходишь в онлайн-игру, выбираешь матч, нажимаешь «Найти игру».

В этот момент сервер вставляет тебя в очередь. База данных получает команду:

INSERT INTO matchmaking_queue (player_id, rank, game_mode, joined_at)
VALUES (8842301, 'Gold III', 'ranked', NOW());

Матч найден — обновляет статус:

UPDATE matchmaking_queue
SET status = 'matched', match_id = 99123
WHERE player_id = 8842301;

Игра закончилась — удаляет тебя из очереди:

DELETE FROM matchmaking_queue
WHERE player_id = 8842301;

Три команды. Один игровой сеанс. А теперь умножь это на миллион одновременных игроков.

INSERT: как данные появляются на свет

INSERT — как данные появляются на свет
INSERT — как данные появляются на свет

INSERT INTO — это рождение данных. Без этой команды не существует ни одной записи в базе.

Новый пользователь зарегистрировался в мессенджере? INSERT.

Ты написал сообщение? INSERT.

Стартап добавил новый товар в каталог? INSERT.

Казалось бы, что тут сложного. Но есть нюанс, который отличает джуна от крепкого разработчика:

Всегда явно указывай столбцы.

-- Так делают все, кто потом плачет на продакшне
INSERT INTO products VALUES (DEFAULT, 'Наушники', 3, 4990.00, TRUE);

-- Так делают те, кто спит спокойно
INSERT INTO products (name, category_id, price, in_stock)
VALUES ('Наушники', 3, 4990.00, TRUE);

Разница? Через полгода кто-то добавит в таблицу новый столбец — и первый вариант тихо сломается. Второй — даже не заметит.

Это не про синтаксис. Это про профессиональную привычку.

UPDATE: самая опасная команда в мире 🔥

UPDATE — самая опасная команда
UPDATE — самая опасная команда

Вот реальная история, которая происходит с кем-то каждую неделю.

Разработчик хочет обновить цену одного товара. Пишет:

UPDATE products
SET price = 49990.00;

Обновил один товар Обновил все товары в каталоге. Всем проставил одну цену. В 2 часа ночи. На продакшне.

Это не выдумка. Это классика жанра.

WHERE — это не опциональная деталь. Это смысл команды:

-- Вот так и только так
UPDATE products
SET price = 49990.00
WHERE id = 1;

А ещё есть профессиональный паттерн, который стоит запомнить навсегда:

Перед любым UPDATE — сначала SELECT с тем же WHERE. Убедись, что попадаешь в нужные строки. Потом — обновляй.

Именно так аналитики в стартапах обновляют цены для целых категорий, не боясь уронить прод:

-- Шаг 1: смотрим
SELECT id, name, price FROM products WHERE category_id = 3;

-- Шаг 2: обновляем
UPDATE products
SET price = ROUND(price * 1.10, 2)
WHERE category_id = 3;

DELETE: удалить легко, вернуть — почти никогда

DELETE — удалить легко, вернуть почти никогда
DELETE — удалить легко, вернуть почти никогда

TikTok удаляет видео, нарушающие правила? DELETE.

Ты удаляешь сообщение в чате? DELETE.

Маркетплейс снимает с продажи товар? DELETE или UPDATE флага — зависит от архитектуры.

И снова — WHERE решает всё.

Без него:

DELETE FROM products;
-- Поздравляю, у тебя пустой каталог.

С ним:

DELETE FROM products
WHERE id = 42;
-- Удалён ровно один товар.

Есть ещё одна деталь, которую понимаешь только когда сталкиваешься: база данных сама защищает данные от неправильного удаления. Если на товар есть заказы — внешний ключ не даст его удалить. Это не баг, это фича реляционной модели.

Транзакции: суперсила, о которой мало кто говорит новичкам

Транзакции — всё или ничего
Транзакции — всё или ничего

Представь: ты переводишь 5000 рублей другу через банковское приложение.

Система списывает деньги с твоего счёта ✅

Система падает с ошибкой при зачислении на счёт друга ❌

Деньги исчезли. Другу не пришли. Никто не виноват?

Именно от этого спасают транзакции — механизм «всё или ничего»:

BEGIN;

UPDATE accounts SET balance = balance - 5000 WHERE id = 101;
UPDATE accounts SET balance = balance + 5000 WHERE id = 202;

COMMIT; -- Только если оба шага успешны

Если что-то пошло не так — ROLLBACK, и база возвращается в исходное состояние. Как будто ничего не было.

Это фундамент финтеха, e-commerce и любой системы, где важна целостность данных. И это то, что отличает серьёзную базу данных от Google Таблиц.

Почему это важно именно сейчас

SQL — это не язык для работы с «табличками».

Это инструмент, которым управляют реальностью: выдачей контента, ценами, балансами, матчмейкингом, аналитикой роста стартапов.

Каждый раз, когда алгоритм Яндекс.Маркета рекомендует тебе товар — кто-то написал запрос, который обновил модель. Каждый раз, когда ИИ обучается на новых данных — кто-то вставил миллионы строк в хранилище.

INSERT, UPDATE, DELETE — три команды, которые стоят за этим всем.

И теперь ты знаешь, как они работают.

💡 Хочешь копнуть глубже? Полный учебный материал с детальными примерами, схемами и крутыми иллюстрациями ждёт тебя на нашем сайте!