Операторы JOIN в SQL — одно из наиболее часто используемых понятий при работе с несколькими таблицами. Именно поэтому вопросы по этим операторам часто встречаются на технических собеседованиях, связанных с SQL.
В этой статье мы собрали топ вопросов по операторам JOIN для собеседований (начиная с базовых), к которым вам стоит подготовиться перед собеседованием.
🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 14.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks
Вопрос 1. Что такое JOIN в SQL?
Ответ. JOIN в SQL — это оператор, который позволяет объединять данные из двух и более таблиц на основе общих полей между этими таблицами.
Простой пример: Объединение двух таблиц – EmployeeDetails и EmployeeSalary. Теперь мы можем соединить эти две таблицы, чтобы получить полезную информацию, такую как получение имени сотрудника (Name) с самой высокой зарплатой (Salary). Поскольку имя присутствует в таблице EmployeeDetails, а зарплата – в EmployeeSalary, мы соединим эти две таблицы с помощью оператора JOIN.
EmployeeDetails
EmpId | Name | ManagerId |
---|---|---|
121 | John | 321 |
321 | Walter | 986 |
421 | Nick | 589 |
EmployeeSalary
EmpId | Project | Salary |
---|---|---|
121 | P1 | 8000 |
321 | P2 | 9000 |
421 | P3 | 9500 |
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
EmpId | Name | City |
---|---|---|
568 | KD | Seattle |
897 | PK | Austin |
215 | PP | Miami |
Department
DeptId | DName | EmpId |
---|---|---|
5466 | HR | 897 |
5219 | IT | 215 |
8795 | HK | 568 |
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:
- Объединяет атрибуты строк из двух таблиц, имеющих общие поля или атрибуты.
- Применим, когда две таблицы имеют хотя бы один общий атрибут.
- Существует множество типов соединений: INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN и др.
- Длина результирующих строк больше по сравнению с длиной строк задействованных таблиц.
В то время как для UNION:
- Объединяет строки таблиц, присутствующих в запросе.
- Применим, когда количество столбцов в запросе одинаково и соответствующие атрибуты имеют одинаковый домен.
- Существует два типа объединения: UNION и UNION ALL.
- Количество результирующих строк больше по сравнению с количеством строк в каждой из таблиц, участвующих в запросе.
Вопрос 10. Напишите SQL-команду для соединения 3 таблиц.
Ответ. Рассмотрим следующие 3 таблицы. Чтобы получить информацию об имени сотрудника (EmpName), названии отдела (DeptName) и поле (Gender) всех сотрудников, мы соединим 3 таблицы.

Employees
EmpNo | EmpName | DeptId | GenderId |
---|---|---|---|
1886 | John Snow | 101 | 1 |
1889 | Amara Giselle | 102 | 2 |
1890 | Richie Tung | 102 | 1 |
Department
DeptId | DeptName |
---|---|
101 | HR |
102 | IT |
Gender
GenderId | Gender |
---|---|
01 | Male |
02 | Female |
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».