Всю эту главу мы только ЧИТАЛИ данные из базы — 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?
Подсказка: В уроке прямо сказано, что происходит с UPDATE, если забыть WHERE.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Что такое DDL (Data Definition Language)?
Подсказка: В названии — «Definition», то есть про определение структуры, а не про данные внутри.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. На какой базе данных можно безопасно выполнять UPDATE, DELETE и DDL?
Подсказка: В уроке это названо «золотым правилом безопасности» — вспомни его формулировку.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Про безопасную работу с изменяющими SQL-командами в уроке сказано следующее. Какие из утверждений верны (выбери все подходящие)?
Выберите все верные варианты.
Подсказка: Сверь каждое утверждение с разделами «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 (и любые изменяющие команды) на боевой базе с реальными данными пользователей НЕЛЬЗЯ — это нарушает золотое правило безопасности; вместо этого такую проверку нужно выполнять на тестовой базе данных (песочнице), а если тестовые данные реально оказались на проде — это отдельная ситуация, требующая согласования, а не самостоятельного DELETE тестировщиком.
Подсказка: Вспомни золотое правило урока: где можно выполнять изменяющие команды, а где — категорически нет.
✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.
Онлайн-проверка ответа появится позже
Задание. Коллега-тестировщик хочет выполнить команду DELETE FROM enrollments; (без WHERE) в тестовой базе данных, чтобы «очистить старые тестовые записи перед новым прогоном тестов». Объясни: (а) что именно произойдёт при выполнении этой команды в её текущем виде; (б) почему это опасно, даже если база тестовая, а не боевая; (в) какие два шага стоит сделать перед выполнением похожей команды, чтобы избежать случайной потери нужных данных.
Критерий приёмки: (а) названо, что команда удалит ВСЕ строки таблицы enrollments целиком, а не только «старые тестовые»; (б) объяснено, что даже на тестовой базе среди записей могут быть данные, нужные для других текущих тестов или для настроенного тестового окружения коллег, — потеря которых сорвёт чужую работу, поэтому «это же не прод» не отменяет риска; (в) названы шаги: сначала выполнить SELECT с планируемым условием WHERE (например по дате или явному признаку «старая тестовая»), чтобы увидеть, какие строки реально попадут под удаление, и добавить в саму команду DELETE конкретное условие WHERE вместо удаления всей таблицы.
Подсказка: Тестовая база не значит «можно всё» — там тоже могут быть чужие нужные данные; вспомни привычку СНАЧАЛА SELECT, ПОТОМ действие.
✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.
Онлайн-проверка ответа появится позже
Что дальше
Это был последний урок главы «SQL и данные для тестировщика». Глава дала полный набор навыков работы с базой данных: зачем тестировщику вообще нужен SQL и как читать схему из таблиц, ключей и связей; как писать первые запросы SELECT, WHERE, LIKE, ORDER BY и LIMIT; как использовать функции для работы со строками и датами; как соединять несколько таблиц через JOIN; как считать агрегаты COUNT, SUM, AVG, MAX, MIN по группам через GROUP BY; как решать задачи подзапросами и когда это оправдано вместо JOIN; и, наконец, как безопасно (или, вернее, когда категорически НЕ безопасно) менять данные и структуру базы через INSERT, UPDATE, DELETE и DDL. Дальше в курсе — глава «Исследовательское тестирование»: она откроет исследовательский подход к тестированию — без заранее написанных тест-кейсов, на основе свободного изучения продукта.
