SQL для тестировщика: SELECT, WHERE и JOIN
Зачем ходить в базу, как устроены таблицы и как достать нужные строки. Настоящий SQL прямо в браузере — с проверкой ответа.
Интерфейс показывает то, что решил показать разработчик. База данных показывает то, что есть на самом деле. Поэтому SQL — обязательный навык: он спрашивается на большинстве собеседований и используется каждый день.
Зачем тестировщику база
- Проверить результат действия. Заказ действительно создался? С какими полями?
- Подготовить данные. Найти пользователя без заказов, товар с нулевым остатком.
- Локализовать дефект. Если в базе верно, а на экране нет — дефект на фронтенде или в API.
- Найти расхождения в данных. Оплаченные заказы без позиций, суммы, которые не сходятся.
- Понять структуру продукта. Схема базы объясняет предметную область лучше документации.
Тестировщику дают доступ только на чтение (SELECT). Это правильно: UPDATE без
WHERE на боевой базе — легендарная катастрофа. Если вам всё же дали больше прав,
работайте только на тестовом стенде и всегда сначала выполняйте SELECT с тем же
условием, что и планируемое изменение.
Как устроены таблицы
Таблица — это строки (записи) и столбцы (поля). У строки есть уникальный первичный ключ
(обычно id). Связь между таблицами — внешний ключ: в таблице
orders лежит user_id, который указывает на users.id.
Базовый запрос
SELECT name, email -- какие столбцы вернуть (* — все)
FROM users -- из какой таблицы
WHERE city = 'Москва' -- условие отбора
ORDER BY created_at DESC -- сортировка (DESC — по убыванию)
LIMIT 10; -- сколько строк вернуть
Условия в WHERE
| Оператор | Пример | Смысл |
|---|---|---|
= <> < > <= >= | total >= 5000 | Сравнение |
AND OR NOT | city = 'Москва' AND total > 1000 | Логика |
IN | status IN ('new','paid') | Одно из перечисленных |
BETWEEN | total BETWEEN 1000 AND 5000 | Диапазон включительно |
LIKE | email LIKE '%@mail.ru' | Шаблон: % — любое число символов |
IS NULL | email IS NULL | Пустое значение |
SELECT → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT. Поменять местами нельзя. Большинство ошибок новичка — именно нарушение этого порядка.
Тренажёр: пишем запросы
Ниже — настоящий SQL-движок с учебной базой интернет-магазина. Запрос выполняется прямо в браузере, а результат сравнивается с эталоном: любое корректное решение засчитывается.
Практическая часть урока выполняется в браузере с проверкой результата. Попробовать бесплатно: тренажёр по вёрстке или зарегистрируйтесь — откроются уроки и тренажёры курса.
Полезные мелочи
--начинает комментарий до конца строки.- Регистр ключевых слов не важен, но
SELECTзаглавными читается лучше. - Строки — в одинарных кавычках:
'Москва'. - Всегда начинайте с
SELECT * FROM таблица LIMIT 10, чтобы посмотреть, что там вообще есть. DISTINCTубирает дубли:SELECT DISTINCT city FROM users.
Это урок из курса «Ручной тестировщик»
В курсе 47 уроков и 36 тренажёров: тест-дизайн, вёрстка и UX, DevTools, API, SQL, Git и работа со стендом. Несколько уроков открыты бесплатно после регистрации.