INSERT, UPDATE, DELETE и DDL — только в песочнице. Риски

До сих пор мы только ЧИТАЛИ данные из базы — SELECT в разных видах. Но иногда тестировщику нужно подготовить тестовые данные: добавить пользователя, изменить статус заказа, удалить старую запись. Для этого есть команды INSERT, UPDATE, DELETE и DDL — и с ними связан главный риск этого урока: их легко выполнить не там, где нужно, и необратимо всё сломать.

Чему научишься за этот урок:
— называть команды INSERT, UPDATE, DELETE и объяснять, что каждая делает;
— объяснять, что такое DDL и почему это самые опасные команды;
— формулировать золотое правило безопасности — только в песочнице, никогда на проде;
— применять привычку проверки через SELECT перед UPDATE/DELETE.

INSERT — добавить строку

INSERT добавляет новую строку в таблицу:

INSERT INTO users (name, email)
VALUES ('Тест Тестов', 'test@example.com');

UPDATE — изменить строки

UPDATE изменяет существующие строки:

UPDATE users SET email = 'new@example.com' WHERE id = 5;

Критически важно: UPDATE ВСЕГДА должен идти с WHERE. Если забыть WHERE, команда изменит ВСЕ строки таблицы разом — а не одну строку, которую вы имели в виду.

DELETE — удалить строки

DELETE удаляет строки:

DELETE FROM users WHERE id = 5;

Та же опасность, что и у UPDATE: DELETE без WHERE удалит ВСЕ строки таблицы.

DDL — меняем саму структуру базы

DDL (Data Definition Language) — команды, меняющие саму СТРУКТУРУ базы, а не данные: CREATE TABLE, ALTER TABLE, DROP TABLE. Это самые опасные команды: DROP TABLE полностью уничтожает таблицу вместе со всеми данными. Ручной тестировщик обычно НЕ выполняет DDL-команды на реальных данных проекта.

Золотое правило безопасности

INSERT, UPDATE, DELETE и DDL выполняются ТОЛЬКО в тестовой базе данных (песочнице), НИКОГДА на боевой (production) базе с реальными данными пользователей. Забытый WHERE в UPDATE или DELETE на проде может необратимо испортить или удалить данные реальных людей.

Привычка: сначала SELECT, потом UPDATE/DELETE

Прежде чем выполнить UPDATE или DELETE с условием, полезная привычка — сначала выполнить SELECT С ТЕМ ЖЕ САМЫМ условием в WHERE. Так вы увидите, какие именно строки попадут под изменение или удаление, и только убедившись, что это именно те строки, которые нужны, выполняете сам UPDATE или DELETE.

Шаг 1 (проверка): SELECT * FROM users WHERE id = 5;
-> смотрим - это точно та строка?

Шаг 2 (само действие): DELETE FROM users WHERE id = 5;
-> выполняем, только убедившись в шаге 1

Итог:
— INSERT добавляет строку, UPDATE изменяет существующие строки, DELETE удаляет строки;
— UPDATE и DELETE без WHERE затронут ВСЕ строки таблицы — это критическая ошибка;
— DDL (CREATE/ALTER/DROP TABLE) меняет структуру базы, DROP TABLE уничтожает таблицу целиком;
— золотое правило: изменяющие команды — только в песочнице, никогда на проде;
— перед UPDATE/DELETE полезно сначала выполнить SELECT с тем же WHERE, чтобы увидеть, что именно затронется.

Контрольный вопрос. Что делает команда INSERT?

АДобавляет новую строку в таблицу
БИзменяет существующие строки
ВУдаляет строки из таблицы

Подсказка: Название команды прямо говорит о том, что она делает со строкой — вставляет её.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что произойдёт, если выполнить UPDATE users SET email = ‘x@example.com’; БЕЗ условия WHERE?

АEmail изменится у ВСЕХ строк таблицы users
БНичего не произойдёт, команда завершится с ошибкой
ВEmail изменится только у первой строки таблицы

Подсказка: В уроке прямо сказано, что происходит с UPDATE, если забыть WHERE.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что такое DDL (Data Definition Language)?

АЯзык программирования для написания автотестов и скриптов
БКоманды, которые только читают данные из таблиц базы
ВКоманды, меняющие структуру базы данных: CREATE, DROP

Подсказка: В названии — «Definition», то есть про определение структуры, а не про данные внутри.

Онлайн-проверка ответа появится позже

Контрольный вопрос. На какой базе данных можно безопасно выполнять UPDATE, DELETE и DDL?

АНа боевой (production) базе, если действовать аккуратно
БТолько на тестовой базе данных (песочнице)
ВНа любой базе, если запрос короткий

Подсказка: В уроке это названо «золотым правилом безопасности» — вспомни его формулировку.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Про безопасную работу с изменяющими SQL-командами в уроке сказано следующее. Какие из утверждений верны (выбери все подходящие)?

Выберите все верные варианты.

АDELETE без WHERE удалит все строки таблицы
БUPDATE без WHERE изменит только первую строку таблицы
ВПеред UPDATE или DELETE с условием полезно сначала выполнить SELECT с тем же WHERE
ГDROP TABLE удаляет только часть данных, но сохраняет структуру таблицы
ДОшибочный DELETE можно отменить командой отмены — база хранит прежние строки
ЕРучной тестировщик обычно не выполняет DDL-команды на реальных данных проекта

Подсказка: Сверь каждое утверждение с разделами «DELETE» и «DDL» — одно из четырёх занижает реальные последствия DROP TABLE.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Какая DDL-команда полностью уничтожает таблицу вместе со всеми данными? Ответь двумя словами по-английски заглавными буквами, как в уроке.

Подсказка: Это самая опасная из трёх DDL-команд, названных в уроке.

Онлайн-проверка ответа появится позже

Задание. Нужно добавить нового тестового пользователя с именем ‘QA Тест’ и email ‘qa@example.com’ в таблицу users(id, name, email). Напиши SQL-команду.

Подсказка: Нужна команда INSERT INTO с указанием столбцов и VALUES.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Даны два запроса к таблице users(id, name, email): (1) UPDATE users SET email = ‘a@example.com’ WHERE id = 3; (2) UPDATE users SET email = ‘a@example.com’; Какой из двух безопасен для выполнения — измени только одну строку с id=3, не затронув остальные? Ответь номером запроса.

Подсказка: Проверь, у какого из двух запросов есть условие WHERE.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Тестировщику нужно выполнить DELETE FROM enrollments WHERE user_id = 42; на боевой (production) базе продукта, чтобы очистить тестовую запись. Объясни в 2-3 предложениях: правильно ли так делать, и что нужно сделать вместо этого?

Подсказка: Вспомни золотое правило урока: где можно выполнять изменяющие команды, а где — категорически нет.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Коллега-тестировщик хочет выполнить команду DELETE FROM enrollments; (без WHERE) в тестовой базе данных, чтобы «очистить старые тестовые записи перед новым прогоном тестов». Объясни: (а) что именно произойдёт при выполнении этой команды в её текущем виде; (б) почему это опасно, даже если база тестовая, а не боевая; (в) какие два шага стоит сделать перед выполнением похожей команды, чтобы избежать случайной потери нужных данных.

Подсказка: Тестовая база не значит «можно всё» — там тоже могут быть чужие нужные данные; вспомни привычку СНАЧАЛА SELECT, ПОТОМ действие.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Что дальше

Теперь у тебя есть базовый набор для работы с базой данных: зачем тестировщику SQL и как читать схему из таблиц, ключей и связей; запросы SELECT, WHERE, LIKE, ORDER BY и LIMIT; функции для строк и дат; соединение таблиц через JOIN; агрегаты COUNT, SUM, AVG, MAX, MIN и группировка GROUP BY; подзапросы; и, наконец, когда и как (а главное — где) можно менять данные и структуру базы через INSERT, UPDATE, DELETE и DDL. Дальше — следующая тема твоего курса.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева