Какие основные операторы есть в SQL кроме SELECT и UPDATE
Что проверяют
Умеете ли вы не только читать данные, но и готовить их для тестов, убирать за собой и понимать, что именно делает команда с базой. Следом часто просят объяснить разницу между DELETE, TRUNCATE и DROP или спрашивают, что будет после DELETE без WHERE.
Как отвечать
Сильнее всего звучит ответ, разложенный по группам команд:
- DML (данные):
INSERTдобавляет строки,DELETEудаляет строки по условию,MERGE(илиINSERT ... ON CONFLICTв PostgreSQL) вставляет либо обновляет за один запрос; - DDL (структура):
CREATEсоздаёт таблицу, индекс или представление,ALTERменяет структуру,DROPудаляет объект целиком,TRUNCATEбыстро очищает таблицу и оставляет её структуру; - DCL (права):
GRANTиREVOKEвыдают и отзывают доступ. Тестировщику это пригодится при проверке ролевой модели; - TCL (транзакции):
BEGIN,COMMIT,ROLLBACK,SAVEPOINT.
Затем привяжите это к работе QA. Через INSERT готовят тестовые данные, когда API нет или оно медленное. Через SELECT с JOIN проверяют, что действие в интерфейсе действительно записалось в нужные таблицы. Транзакция с ROLLBACK в конце позволяет проверить опасный запрос и ничего не оставить после себя.
Про TRUNCATE стоит знать детали: он не перебирает строки по одной, не запускает построчные триггеры на удаление, а в MySQL и Oracle неявно фиксирует транзакцию, так что откатить его там нельзя. В PostgreSQL он транзакционный.
Где спотыкаются
Называют JOIN, WHERE и ORDER BY отдельными операторами. Это части запроса SELECT, а не самостоятельные команды, и интервьюер это обычно отмечает.
Путают DELETE, TRUNCATE и DROP. Первый удаляет строки по условию и откатывается, второй очищает таблицу целиком, третий удаляет саму таблицу вместе со структурой.
Не думают о последствиях на общем стенде. DELETE или UPDATE без WHERE на базе, которой пользуется вся команда, ломает чужие тесты. Хороший ответ включает привычку сначала выполнить SELECT с тем же условием и посмотреть, сколько строк заденет запрос.