SQL-разработчик проектирует работу с данными и пишет запросы, результат которых остаётся корректным на реальном объёме. Для старта нужны не только конструкции языка, но и понимание модели, ограничений и способа проверки результата.
Что изучить для первой работы
Освойте выборку, фильтрацию, соединения, группировку, подзапросы, общие табличные выражения и оконные функции. Затем разберите ключи, нормализацию, ограничения целостности, транзакции и назначение индексов.
На каждом запросе сначала запишите ожидаемый результат для маленького набора данных. Добавьте отсутствующую связь, дубликат и NULL. Сравните ожидание с выполнением и только после этого смотрите план запроса.
Какой проект показать
Спроектируйте синтетическую базу, например каталог книг и выдач без данных реальных людей. Приложите схему, скрипт создания, небольшой генератор тестовых строк и запросы для нескольких бизнес-вопросов. Опишите ограничения и транзакцию изменения данных.
Для одного медленного запроса сохраните план, сформулируйте причину, внесите изменение и повторите замер на одинаковых данных. Не делайте вывод «индекс ускоряет всё»: покажите конкретное условие и цену записи.
Вопросы на собеседовании SQL-разработчика
Чем INNER JOIN отличается от LEFT JOIN
Объясните судьбу строки без пары и покажите минимальные две таблицы. Отдельно разберите, почему условие по правой таблице в WHERE иногда превращает LEFT JOIN по смыслу в INNER JOIN.
Как NULL влияет на сравнение
Расскажите о неизвестном значении и трёхзначной логике. Покажите корректную проверку IS NULL и заранее предскажите результат сравнения и агрегирования на строках с NULL.
Почему запрос возвращает дубликаты
Проверьте кратность связей и ключи до добавления DISTINCT. Объясните, какое соединение размножило строки, является ли это ошибкой модели или ожидаемым отношением один-ко-многим и какой результат нужен бизнесу.
Что даёт индекс
Индекс помогает находить строки без полного просмотра при подходящем условии, но занимает место и удорожает изменения. Назовите селективность, порядок колонок и план выполнения как предмет проверки, а не угадывайте индекс по имени поля.
Где нужна транзакция
Приведите изменение нескольких связанных строк, которое должно завершиться целиком или не произойти. Объясните конкурирующие операции, уровень изоляции и способ повторить безопасную транзакцию после конфликта.
Как проверить корректность сложного запроса
Разбейте задачу на промежуточные результаты, подготовьте минимальные строки для каждой ветви и сравните итог с ручным расчётом. Добавьте границы периода, пустой набор, дубликаты и NULL. Производительность измеряйте отдельно от корректности.
Как понять, что можно откликаться
Откликайтесь, если способны спроектировать небольшую связанную схему, написать запрос с несколькими соединениями и агрегацией, объяснить его результат и найти ошибку на контрпримере. Для стартовой роли важнее проверяемое рассуждение, чем знание всех функций конкретной СУБД.
Перед интервью заново выполните проект на чистой базе. Подготовьте объяснение одного решения по модели данных, одного исправленного запроса и одного измеренного улучшения.
Как Просто найди помогает
«Просто найди» собирает вакансии в одну ленту и сопоставляет их с резюме. Так проще увидеть, где работодателю нужен именно SQL-разработчик, а где SQL — лишь один навык другой роли. Открытая бета бесплатна.