SQL для тестировщика — 20 основных запросов

SQL для тестировщика — 20 основных запросов

QA❤️4Life

20 SQL-запросов, которые тестировщик пишет каждый день. От простой выборки до соединения таблиц и группировки. Все примеры — на схеме интернет-магазина: клиенты, заказы, товары.

Канал: QA❤️4Life
Автор: Евгений Гусинец


1. SELECT — вся таблица

SELECT * FROM customers;
Проверить, что в таблице есть данные. Первый запрос перед любым тестом.

2. WHERE с OR — одно из нескольких значений

SELECT * FROM orders WHERE status = 'pending' OR status = 'processing';
Найти заказы, которые ещё не завершены.

3. WHERE с AND — несколько условий

SELECT * FROM customers WHERE city = 'Moscow' AND is_active = true;
Найти активных клиентов из конкретного города.

4. WHERE с AND (3 условия)

SELECT * FROM orders WHERE status = 'shipped' AND total > 5000 AND created_at > '2026-01-01';
Найти дорогие отправленные заказы в этом году.

5. Комбинация OR и AND

SELECT * FROM products WHERE (category = 'Electronics' AND price > 10000) OR (category = 'Books' AND price < 500);
Дорогая электроника или дешёвые книги — два разных сценария в одном запросе.

6. IN — список значений

SELECT * FROM orders WHERE status IN ('pending', 'shipped', 'delivered');
То же, что несколько OR, но короче и читаемее.

7. NOT IN — исключение значений

SELECT * FROM orders WHERE status NOT IN ('cancelled', 'refunded');
Все заказы, кроме отменённых и возвращённых.

8. BETWEEN — диапазон

SELECT * FROM products WHERE price BETWEEN 1000 AND 5000;
Товары в ценовом диапазоне. Включает границы.

9. INSERT — добавление данных

INSERT INTO products (product_id, name, price, category) VALUES (101, 'Wireless Mouse', 2500, 'Electronics');
Добавить новый товар. После вставки — SELECT, чтобы проверить.

10. UPDATE — обновление данных

UPDATE products SET price = 2200 WHERE product_id = 101;
Изменить цену товара. Всегда с WHERE — иначе обновится вся таблица.

11. DELETE — удаление данных

DELETE FROM products WHERE product_id = 101;
Удалить товар. Те же меры предосторожности, что с UPDATE.

12. INSERT + SELECT — проверить вставку

INSERT INTO products (product_id, name, price, category) VALUES (102, 'USB Hub', 1800, 'Electronics');
SELECT * FROM products WHERE product_id = 102;
Добавили — сразу проверили, что запись на месте.

13. INNER JOIN — связь двух таблиц

SELECT c.name, o.total, o.status FROM customers c JOIN orders o ON c.customer_id = o.customer_id WHERE c.email = 'ivan@example.com';
Найти все заказы конкретного клиента по email.

14. LEFT JOIN — все записи из левой таблицы

SELECT c.name, o.order_id FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id;
Найти клиентов без заказов. Если по ТЗ все должны иметь заказы — это баг.

15. FULL JOIN — полное внешнее соединение

SELECT c.name, o.order_id FROM customers c FULL JOIN orders o ON c.customer_id = o.customer_id;
Показать всех клиентов и все заказы, даже если нет совпадений.

16. CROSS JOIN — декартово произведение

SELECT p.name, c.name FROM products p CROSS JOIN categories c;
Каждый товар с каждой категорией. Полезно для генерации комбинаций в тестовых данных.

17. COUNT — количество записей

SELECT COUNT(*) FROM orders WHERE status = 'pending';
Сколько заказов ожидают обработки. Сверить с цифрой в админке.

18. GROUP BY — группировка

SELECT status, COUNT(*) FROM orders GROUP BY status;
Распределение заказов по статусам. Быстро увидеть, не зависли ли где-то.

19. GROUP BY + HAVING — фильтр групп

SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id HAVING COUNT(*) > 5;
Найти клиентов с аномально большим числом заказов. WHERE не работает с агрегатами — только HAVING.

20. GROUP BY + ORDER BY — сортировка групп

SELECT category, COUNT(*) AS cnt FROM products GROUP BY category ORDER BY cnt DESC;
Категории товаров по убыванию количества. Удобно для отчётов.


Совет: эти 20 запросов покрывают 90% ежедневных задач тестировщика. Сохрани шпаргалку — пригодится и на работе, и на собеседовании.

Report Page