ym97433607

Как работает SQL JOIN

6 минут на чтение
3 августа 2026
Попробуйте Гигачат
Он умеет работать с текстом, решать задачи, помогать с программированием, обсуждать разнообразные темы и генерировать изображения по описаниям.
Общение с GigaChat 2.0
Ввод голосом и озвучивание ответа
Поиск по интернету
Создание картинок
Работа с файлами
Создание открыток
Распознавание изображений
Умный редактор текста

В блоге ГигаЧат разбираем один из самых часто используемых SQL-операторов  JOIN.

Что такое JOIN в SQL и зачем он нужен

Операция JOIN в SQL  это механизм объединения данных из двух и более таблиц по общему признаку. Чаще всего признаком выступает общий идентификатор, внешний ключ или другое поле, значения которого совпадают в связанных таблицах.

В реляционных БД информация обычно распределяется между несколькими таблицами. Это нужно для повышения гибкости базы данных, уменьшения числа дубликатов и упрощения обновления. Но иногда нужно получить связанные сведения из нескольких таблиц  для этого используют JOIN.

Например, информация о клиентах может храниться в таблице Customers, а данные о заказах  в Orders. Если необходимо вывести список заказов вместе с именами покупателей, одной таблицы будет недостаточно. Но можно объединить записи по общему полю и получить единый результат.

Важно понимать, что оператор не изменяет информацию в таблицах. Он работает только с результатом выборки, а соединение выполняется только во время исполнения SQL-запроса. Понимание логики работы механизма считается базовым знанием для начинающих разработчиков, поэтому лучше осознать его на первых этапах обучения.

Синтаксис JOIN в SQL

Общая схема записи выглядит так:

SELECT столбцы

FROM первая_таблица

JOIN вторая_таблица

ON перваятаблица.общееполе = втораятаблица.общееполе;

SELECT определяет, какие столбцы необходимо вывести, FROM указывает основную таблицу, а JOIN присоединяет вторую. ON задаёт условие соединения, по которому SQL определяет связанные записи.

Как работает JOIN в SQL

Логику работы легче всего понять на примере. Допустим, есть две таблицы интернет-магазина, о которых мы говорили в первом разделе статьи.

Customers:

customer_idname
1Илья Бажанов
2Ирина Афанасьева
3Виктор Иванов

Orders:

order_idcustomer_idamount
101115 000
102124 000
10331 900

Теперь объединим их с помощью SQL-запроса:

SELECT *

FROM Customers

JOIN Orders

ON Customers.customer_id = Orders.customer_id;

Здесь мы выбираем все столбцы. СУБД действует по такому алгоритму:

  1. Берет первую запись из Customers и сравнивает значение customer_id со всеми строками Orders.
  2. Находит совпадения и объединяет найденные строки.
  3. Переходит к следующей записи из Customers.

Цикл повторяется, пока не будут обработаны все строки.

Результат в нашем примере будет таким:

nameorder_idamount
Илья Бажанов10115 000
Илья Бажанов10224 000
Виктор Иванов1031 900

Илья Бажанов появляется дважды, поскольку у него было два заказа  оператор создает отдельную запись для каждого найденного совпадения.

Чтобы ускорить поиск совпадений, важно индексировать поля, по которым соединяются таблицы.

Виды JOIN в SQL

INNER JOIN — только совпадения

Это наиболее часто используемый тип соединения. Он возвращает только те строки, для которых были найдены совпадения в обеих таблицах. Если соответствующей записи нет хотя бы в одной, такая строка не попадет в результат. Пример именно с этим оператором мы привели в предыдущем пункте.

LEFT JOIN — всё из левой таблицы

Оператор возвращает все строки из левой таблицы. Если соответствующая запись в правой отсутствует, SQL подставляет значение NULL.

Например, компания хранит в базе список сотрудников и данные о выданных им ноутбуках.

Employees:

employee_idemployee
1Алена Сидорова
2Оксана Трофимова
3Игорь Андреев

Laptops:

employee_idlaptop
1ASUS
2Lenovo

Запрос будет выглядеть так:

SELECT e.employee, l.laptop

FROM Employees e

LEFT JOIN Laptops l

ON e.employee_id = l.employee_id;

В результате получим такие пары:

employeelaptop
Алена СидороваASUS
Оксана ТрофимоваLenovo
Игорь АндреевNULL

RIGHT JOIN — обратный LEFT JOIN

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

Teachers:

teacher_idteacher
1Виталий Кузнецов
2Марина Смирнова

Courses:

course_idteacher_idcourse
1011Python
1022Java
1033C++

Сформулируем SQL-запрос:

SELECT t.teacher, c.course

FROM Teachers t

RIGHT JOIN Courses c

ON t.teacher_id = c.teacher_id;

Результат:

teachercourse
Виталий КузнецовPython
Марина СмирноваJava
NULLC++

Курс по C++ есть в итоговой таблице, несмотря на то что преподавателя с идентификатором 3 в Teachers нет.

FULL JOIN — полное объединение

Этот оператор объединяет возможности двух предыдущих: он возвращает все строки пары таблиц независимо от того, найдены ли совпадения. Приведем пример с информацией о покупателях и уровнях программы лояльности в базе данных.

Clients:

client_idclient
1Максим Комаров
2Арина Емельянова
3Ольга Малышева

BonusCards:

client_idcard
2Gold
4Platinum

Запрос выглядит так:

SELECT c.client, b.card

FROM Clients c

FULL JOIN BonusCards b

ON c.client_id = b.client_id;

Результат:

clientcard
Максим КомаровNULL
Арина ЕмельяноваGold
Ольга МалышеваNULL
NULLPlatinum

CROSS JOIN — декартово произведение

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

Sizes:

size
S
M

Colors:

color
Черный
Синий
Голубой

Напишем SQL-запрос:

SELECT s.size, c.color

FROM Sizes s

CROSS JOIN Colors c;

Результат:

sizecolor
SЧерный
SСиний
SГолубой
MЧерный
MСиний
MГолубой

Количество строк равно произведению количества записей обеих таблиц (2 * 3 = 6).

Как ГигаЧат поможет освоить SQL

ГигаЧат  это бесплатный ИИ-помощник от Сбера. Он умеет вести диалоги с пользователями, создавать картинки и видео, а также генерировать код.

С помощью ГигаЧата можно быстрее разобраться в логике работы JOIN и других операторов, понять различия между ними и научиться составлять сложные SQL-запросы. Помимо теории, нейросеть может сгенерировать задания для закрепления темы и проверить результат выполнения с объяснением каждой ошибки. Если писать код самостоятельно пока не получается, попросите у ГигаЧата примеры решения вашей задачи.

Все эти функции полезны для тех, кто только начинает изучение языка. Работать с нейросетью, получая развернутые ответы с пояснениями и примерами, гораздо быстрее, чем искать информацию в интернете.

Ещё по теме
СберБанк обрабатывает Cookies с целью персонализации сервисов и для того, чтобы пользоваться сайтом было удобнее. Вы можете запретить обработку Cookies в настройках браузера. Пожалуйста, ознакомьтесь с политикой использования Cookies
Подробно рассказываем, как CберБанк обрабатывает и защищает ваши данные на странице Sber Bank Privacy