С какими операторами SQL вы работали
Что проверяют
Можете ли вы сами добыть данные для проверки, не дёргая разработчика. Для тестировщика SQL это инструмент подготовки состояния и сверки результата, поэтому спрашивают не про синтаксис ради синтаксиса, а про то, какие проверки вы им закрывали.
Как отвечать
Называйте то, что применяли, сразу привязывая к задаче.
- Выборка:
SELECTсWHERE,ORDER BYиLIMIT, соединенияINNER JOINиLEFT JOIN,DISTINCT. - Агрегаты:
COUNT,SUM,AVGвместе сGROUP BYи фильтром по агрегату черезHAVING. - Подзапросы,
IN,EXISTS,UNION,CASEдля перевода кодов статусов в читаемый вид. - Изменение данных под сценарий:
INSERT,UPDATE,DELETE, обёрнутые в транзакцию с откатом, чтобы не оставлять мусор на стенде.
Дальше пара запросов, которые показывают, что вы этим действительно пользуетесь. Поиск дублей:
select email, count(*) from users group by email having count(*) > 1;Поиск осиротевших строк: LEFT JOIN по внешнему ключу и условие where u.id is null.
Если знаете оконные функции, скажите про ROW_NUMBER для выбора последней записи по каждому объекту. На фоне обычного списка операторов это заметно выделяет ответ.
Где спотыкаются
Сравнивают с NULL через равенство. Условие status = NULL не вернёт ничего, нужно IS NULL. По той же причине COUNT(column) считает не все строки, а NOT IN с подзапросом, где встретился NULL, молча отдаёт пустой результат.
Второе: пишут условие по правой таблице LEFT JOIN в секции WHERE. Строки без пары отсеиваются, внешнее соединение превращается во внутреннее, и проверка находит не то, что искала. Условию место в ON.
Третье: выполняют UPDATE или DELETE без WHERE и без транзакции. На стенде это потерянный день команды, на боевой базе инцидент. Поэтому такой запрос сначала пишется как SELECT с тем же условием.