Какой у вас уровень знаний баз данных
Что проверяют
Сможете ли вы сами проверить данные, а не только то, что показывает интерфейс. Интервьюеру важно понять, на каком уровне вы пишете SQL и не наломаете ли дров на общем стенде. Следом почти всегда просят написать запрос, обычно с JOIN и GROUP BY.
Как отвечать
Вместо «средний уровень» опишите уровень через то, что вы умеете:
- чтение данных:
SELECTс фильтрами,INNERиLEFT JOIN, агрегаты сGROUP BYиHAVING, подзапросы. Если знаете оконные функции вродеROW_NUMBER(), скажите, это уже уверенный уровень; - изменение данных:
INSERT,UPDATE,DELETEдля подготовки тестовых данных и привычка делать это в транзакции сROLLBACK, если данные нужны временно; - устройство схемы: первичные и внешние ключи, ограничения
NOT NULLиUNIQUE, нормализация на уровне «зачем разносить данные по таблицам»; - проверки для QA: запись после действия в интерфейсе, дубли через
GROUP BY ... HAVING COUNT(*) > 1, осиротевшие строки черезLEFT JOINс условиемIS NULLна ключ связанной таблицы, корректность данных после миграции; - инструменты: DBeaver, DataGrip,
psql, в автотестах Python сpsycopgили SQLAlchemy, для изолированной базы Testcontainers; - диагностика: что делает индекс и как
EXPLAINпоказывает, использует ли его запрос. Пригодится, когда заводите баг на медленный экран.
Назовите конкретные СУБД: PostgreSQL, MySQL, иногда MongoDB или Redis. Про NoSQL скажите честно, на каком уровне: одно дело прочитать документ, другое понимать модель данных.
Если SQL у вас в основном по курсам, так и скажите и приведите пример задачи из тестирования, которую решили бы запросом.
Где спотыкаются
Пишут WHERE column = NULL вместо IS NULL и путают COUNT(*) с COUNT(column), который пропускает NULL.
Запускают UPDATE или DELETE без WHERE на общем тестовом стенде и ломают работу коллегам.
Завышают уровень словами, а на простом запросе с LEFT JOIN путаются, какие строки попадут в результат.