Как оцениваешь свой уровень владения SQL?
Что проверяют
Сможете ли вы сами проверить данные в базе, а не ждать разработчика. Тестировщику SQL нужен, чтобы убедиться, что после действия в интерфейсе или вызова API в таблицы записалось правильное, и чтобы готовить тестовые данные. Поэтому за самооценкой обычно идёт задача: «найди пользователей без заказов» или «найди дубли по email».
Как отвечать
Назовите уровень и покажите, что за ним стоит:
- выборки:
SELECTсWHERE,ORDER BY,LIMIT,LIKE,IN,BETWEEN; - соединения: разница между
INNER JOINиLEFT JOIN, поиск записей без пары черезLEFT JOIN ... WHERE b.id IS NULL; - агрегаты:
COUNT,SUM,GROUP BYиHAVING, поиск дублей черезGROUP BY email HAVING COUNT(*) > 1; - изменение данных:
INSERT,UPDATE,DELETEвнутри транзакции сROLLBACK, чтобы не испортить общий стенд; - следующий уровень: подзапросы, CTE через
WITH, оконные функции вродеROW_NUMBER(), чтение плана черезEXPLAIN.
Пример: «Уверенно пишу запросы с несколькими JOIN и агрегатами, проверяю ими данные после вызовов API и готовлю наборы для тестов в PostgreSQL. Оконные функции использовал редко, в плане запроса ориентируюсь слабо». Назовите свои СУБД и реальные задачи. Если опыт в основном учебный, скажите это и предложите решить задачу прямо на собеседовании.
Где спотыкаются
Сравнивают с NULL через знак равенства. Условие WHERE phone = NULL не вернёт ни одной строки, нужно IS NULL.
Путают WHERE и HAVING или ставят условие на правую таблицу LEFT JOIN в WHERE, и соединение незаметно превращается во внутреннее.
Запускают UPDATE или DELETE без WHERE на стенде, которым пользуется вся команда. Сначала SELECT с тем же условием, потом изменение в транзакции.