Найти тему

Вопросы тестировщику на собеседовании про SQL

Оглавление

На этот раз решил вопросы по блоку SQL выделить отдельно. Кажется так будет проще и эффективней готовиться. Обычно на собеседовании будет 3-4 вопроса из этого списка.

Примечание: сложных вопросов (со звездочкой) в этой статье не будет. Мы рассмотрим их отдельно вот здесь (Вопросы со * (сложные) про SQL на собеседовании тестировщика).

Итак вопросы по теме SQL которые вам встретятся на собеседованиях:

Основы SQL

1. Что такое SQL? Для чего он используется?

Краткий ответ: SQL (Structured Query Language) — язык программирования, используемый для управления и манипуляции данными в реляционных базах данных.

2. Что такое SELECT-запрос и как он используется?

Краткий ответ: SELECT — команда SQL, которая используется для извлечения данных из одной или нескольких таблиц базы данных.

3. Что такое JOIN? Какие виды JOIN существуют?

Краткий ответ: JOIN используется для объединения строк из двух и более таблиц на основе связанного столбца. Основные виды: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN

Подробный ответ о видах JOIN здесь.

4. Что такое PRIMARY KEY (первичный ключ) и FOREIGN KEY (внешний ключ)?

Краткий ответ: PRIMARY KEY — уникальный идентификатор записи в таблице, FOREIGN KEY — столбец, который ссылается на PRIMARY KEY в другой таблице.

5. Что такое WHERE и HAVING? В чём разница между ними?

Краткий ответ: WHERE используется для фильтрации строк до выполнения агрегации, HAVING — для фильтрации после выполнения агрегации.

Агрегатные функции и группы

1. Как работают функции COUNT(), SUM(), AVG(), MIN(), MAX()?

Краткий ответ: Это агрегатные функции, которые выполняют операции над группами данных, такие как подсчёт количества записей, сумма значений, среднее значение, минимальное и максимальное значения соответственно.

Более подробный ответ читайте в статье Агрегатные функции в SQL.

2. Как работает GROUP BY?

Краткий ответ: GROUP BY группирует строки по значению одного или нескольких столбцов и часто используется с агрегатными функциями.

3. Как реализовать выборку уникальных значений?

Краткий ответ: Используя ключевое слово DISTINCT.

Работа с данными

1. Что такое INSERT, UPDATE, DELETE?

Краткий ответ: Это команды для манипуляции данными. INSERT добавляет новые строки, UPDATE изменяет существующие строки, DELETE удаляет строки из таблицы.

2. Как можно объединить результаты нескольких SELECT-запросов?

Краткий ответ: Используя операторы UNION или UNION ALL. (ранее часто использовали в хакерских атаках типа SQL Инъекция. Пишите в комментариях если будет интересно узнать как)

3. Как работает оператор LIKE?

Краткий ответ: LIKE используется для поиска строк, соответствующих шаблону. Например, 'A%' найдет все строки, начинающиеся с 'A'.

4. Как отсортировать результаты выборки?

Краткий ответ: Используя ORDER BY с указанием столбцов и порядка сортировки (ASC (по возрастанию) или DESC (по убыванию)).

Работа с подзапросами

1. Что такое подзапрос (subquery)?

Краткий ответ: Подзапрос — это запрос, вложенный в другой запрос. Он может использоваться в SELECT, WHERE, FROM, или HAVING.

2. Чем отличается коррелированный подзапрос от некоррелированного

Краткий ответ: Коррелированный подзапрос зависит от внешнего запроса и выполняется для каждой строки внешнего запроса, тогда как некоррелированный подзапрос выполняется один раз и его результат используется в основном запросе.

Индексы и производительность

1. Что такое индексы и зачем они нужны?

Краткий ответ:
Индекс в SQL — это специальный "список", который база данных создает, чтобы быстрее находить нужные данные в большой таблице. Представьте себе книгу с миллионом страниц: если вам нужно быстро найти определенное слово, вы бы воспользовались указателем в конце книги, где указаны страницы с этим словом, вместо того чтобы просматривать каждую страницу вручную. Индекс в базе данных выполняет ту же функцию — помогает быстро находить нужные данные без необходимости просматривать всю таблицу.
Индексы ускоряют поиск данных в таблицах, но могут замедлять операции вставки и обновления.

2. Что такое нормализация? Какие существуют её формы?

Краткий ответ: Нормализация — это процесс структурирования данных для минимизации избыточности и зависимости. Самые распространенные формы: первая (1NF), вторая (2NF), третья (3NF), и Boyce-Codd нормальная форма (BCNF).

Более подробный ответ на вопрос читайте здесь.

3. Как можно оптимизировать медленный запрос?

Краткий ответ: Использование индексов, оптимизация JOIN-ов, уменьшение количества подзапросов, анализ плана выполнения запроса (EXPLAIN).

Практические задачи

1. Напишите SQL-запрос, чтобы найти второй по величине (второе максимальное) значение в таблице.

Краткий ответ:

SELECT MAX(column_name)
FROM table_name
WHERE column_name < (SELECT MAX(column_name) FROM table_name);

2. Как написать запрос, который вернет записи, не имеющие соответствий в другой таблице?

Краткий ответ:

Используя LEFT JOIN и фильтр WHERE на NULL значения во второй таблице.

3. Как написать запрос, чтобы вернуть дубликаты записей по определенному столбцу?

Краткий ответ:

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;

4. Как просуммировать данные по столбцу? А по строке?
Краткий ответ:

Сумма по столбцу:

SELECT SUM(column_name)
FROM table_name;

Сумма по строке:

SELECT (column1 + column2 + column3) AS row_sum
FROM table_name;

Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам