Топ вопросов на собеседовании по операторам JOIN в SQL

Операторы JOIN в SQL — одно из наиболее часто используемых понятий при работе с несколькими таблицами. Именно поэтому вопросы по этим операторам часто встречаются на технических собеседованиях, связанных с SQL.

В этой статье мы собрали топ вопросов по операторам JOIN для собеседований (начиная с базовых), к которым вам стоит подготовиться перед собеседованием.

🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 14.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks

Вопрос 1. Что такое JOIN в SQL?

Ответ. JOIN в SQL — это оператор, который позволяет объединять данные из двух и более таблиц на основе общих полей между этими таблицами.

Простой пример: Объединение двух таблиц – EmployeeDetails и EmployeeSalary. Теперь мы можем соединить эти две таблицы, чтобы получить полезную информацию, такую как получение имени сотрудника (Name) с самой высокой зарплатой (Salary). Поскольку имя присутствует в таблице EmployeeDetails, а зарплата – в EmployeeSalary, мы соединим эти две таблицы с помощью оператора JOIN.

EmployeeDetails

EmpIdNameManagerId
121John321
321Walter986
421Nick589

EmployeeSalary

EmpIdProjectSalary
121P18000
321P29000
421P39500
SELECT * 
FROM EmployeeDetails INNERJOIN EmployeeSalary 
ON EmployeeDetails.EmpId = EmployeeSalary.EmpId; 


Вопрос 2. Объясните различные типы JOIN в SQL.

Ответ. Некоторые из основных типов JOIN в SQL:

  • INNER JOIN  – Используется для возврата записей, имеющих совпадающие значения в обеих таблицах.
  • LEFT JOIN  – Объединяет все строки левой таблицы и соответствующие им строки правой таблицы.
  • RIGHT JOIN – Объединяет все строки правой таблицы и соответствующие им строки левой таблицы.
  • FULL JOIN  – Возвращает все записи из обеих таблиц, если есть совпадение хотя бы в одной из них.
  • SELF JOIN  – Используется для соединения таблицы с самой собой. При этом таблица рассматривается как две отдельные таблицы.
  • CROSS JOIN – Возвращает количество строк первой таблицы, умноженное на количество строк второй таблицы.

Вопрос 3. В чем разница между INNER JOIN и SELF JOIN?

Ответ. SELF JOIN – это разновидность INNER JOIN. Оператор INNER JOIN используется для возврата записей, присутствующих в обеих таблицах. В то время как SELF JOIN соединяет таблицу с самой собой.

Вопрос 4. В чем разница между FULL JOIN и CROSS JOIN?

Ответ. FULL OUTER JOIN — это комбинация LEFT OUTER JOIN и RIGHT OUTER JOIN. Оно возвращает все строки из обеих таблиц, соответствующие условию WHERE, а если условие ON не выполняется — подставляет значения NULL. CROSS JOIN, напротив, создаёт декартово произведение между двумя таблицами, возвращая все возможные комбинации строк.

Вопрос 5. Что такое NATURAL JOIN?

Ответ. NATURAL JOIN используется для создания неявного условия на основе значений общих атрибутов в двух таблицах. Общие атрибуты — это атрибуты, имеющие одинаковые имена в обеих таблицах. NATURAL JOIN не требует оператора сравнения, как в случае с equi-join.

Пример: В приведенных ниже двух таблицах Employee и Department есть общее поле EmpId. Поэтому в случае NATURAL JOIN нам не нужно указывать условие ON для поля EmpId в обеих таблицах.

Employee

EmpIdNameCity
568KDSeattle
897PKAustin
215PPMiami

Department

DeptIdDNameEmpId
5466HR897
5219IT215
8795HK568
SELECT Employees.Name, Department.DName 
FROM Department
NATURAL JOIN Employees
🔥 Хочешь больше SQL Задачек??? 🔥
В канале SqlQuestions более 1000 разных SQL задач с ответами. Переходи и посмотри

Вопрос 6. Что такое Equi Join?

Ответ. Equi Join — это тип соединения, который объединяет таблицы на основе совпадающих значений в указанных столбцах.

  • Имена столбцов не обязательно должны совпадать.
  • Результирующая таблица может содержать повторяющиеся столбцы.
  • Можно выполнить equi join для более чем двух таблиц.

Синтаксис:

SELECT * 
FROM TableName1 
JOIN TableName2 
ON TableName1.ColumnName = TableName2.ColumnName;


Вопрос 7. Что такое Non-Equi Join?

Ответ. Non-Equi Join — это соединение, в котором условия соединения используют операторы сравнения вместо оператора равенства.

Синтаксис:

SELECT * 
FROM TableName1 
JOIN TableName2 
ON TableName1.ColumnName [>,<,>=,<= ] TableName2.ColumnName;

Вопрос 8. В чем разница между CROSS JOIN и NATURAL JOIN?

Ответ. CROSS JOIN создает перекрестное произведение (декартово произведение) двух таблиц, тогда как NATURAL JOIN основывается на всех столбцах, имеющих одинаковые имена и типы данных в обеих таблицах.

Вопрос 9. Чем операторы JOIN отличаются от операторов UNION?

Ответ. Некоторые характеристики JOIN:

  1. Объединяет атрибуты строк из двух таблиц, имеющих общие поля или атрибуты.
  2. Применим, когда две таблицы имеют хотя бы один общий атрибут.
  3. Существует множество типов соединений: INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN и др.
  4. Длина результирующих строк больше по сравнению с длиной строк задействованных таблиц.

В то время как для UNION:

  1. Объединяет строки таблиц, присутствующих в запросе.
  2. Применим, когда количество столбцов в запросе одинаково и соответствующие атрибуты имеют одинаковый домен.
  3. Существует два типа объединения: UNION и UNION ALL.
  4. Количество результирующих строк больше по сравнению с количеством строк в каждой из таблиц, участвующих в запросе.

Вопрос 10. Напишите SQL-команду для соединения 3 таблиц.

Ответ. Рассмотрим следующие 3 таблицы. Чтобы получить информацию об имени сотрудника (EmpName), названии отдела (DeptName) и поле (Gender) всех сотрудников, мы соединим 3 таблицы.

Employees 

EmpNoEmpNameDeptIdGenderId
1886John Snow1011
1889Amara Giselle1022
1890Richie Tung1021

Department

DeptIdDeptName
101HR
102IT

Gender

GenderIdGender
01Male
02Female
SELECT EmpName, DeptName, Gender
FROM Employees
JOIN Departement ON Employees.DeptId=Department.DeptId
JOIN Genders ON Employees.GenderId=Genders.GenderID;


На этом завершается наша статья с топовыми вопросами по операторам JOIN для собеседований. Надеемся, эти вопросы помогут вам успешно пройти собеседование.

Перевод статьи «Top SQL Joins Interview Questions and Answers».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *