Собесов

Какие SQL-операции не меняют количество строк в таблице?

SQLDML и DDLЛёгкаяJunior

Условие

Какая операция не меняет количество строк в таблице?

  • A) INSERT
  • B) UPDATE
  • C) DELETE
  • D) TRUNCATE

Решение

Правильный ответ: B (UPDATE).

UPDATE изменяет значения в существующих строках, но не добавляет и не удаляет их. Количество строк остаётся прежним.

Команда Что делает Влияет на счётчик строк?
INSERT Добавляет новые строки Да, +N
UPDATE Меняет значения столбцов в существующих строках Нет
DELETE Удаляет строки (по WHERE или все) Да, −N
TRUNCATE Удаляет все строки (быстро, без журналирования) Да, до 0

Замечание про DELETE vs TRUNCATE

  • DELETE FROM t — удаляет все строки построчно, пишет в лог транзакций, можно откатить. Триггеры срабатывают.
  • TRUNCATE TABLE t — операция уровня DDL: освобождает страницы, сбрасывает счётчики, не пишет в журнал построчно. Быстрее, но нельзя откатить в некоторых СУБД (в PostgreSQL — можно в транзакции).

Подвох с UPDATE

UPDATE всё-таки может косвенно «потерять» строки, если триггер BEFORE UPDATE или INSTEAD OF удалит строку, или если ограничение CHECK уронит транзакцию целиком. Но сам UPDATE как команда — нет.

Подводные камни

  1. UPDATE x SET id = id + 1 для PRIMARY KEY. Может упасть из-за нарушения уникальности, но количество строк не изменится при успехе.
  2. MERGE/UPSERT (PostgreSQL INSERT ... ON CONFLICT). Могут одновременно вставлять и обновлять — количество строк может расти.
  3. DELETE без WHERE. Удаляет всю таблицу. WHERE 1=0 — ничего не удаляет (0 строк).

Эталонный ответ

B (UPDATE) — единственная из перечисленных, не изменяющая количество строк.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти