SQL код скопирован в буфер обмена
Изучите основы соединений (JOIN) в SQL с помощью нашего простого урока. Поймите, как объединять данные из нескольких таблиц в реляционных базах данных на практических примерах. Это руководство раскрывает ключевые концепции JOIN, помогая вам писать эффективные SQL-запросы. Идеально для начинающих.
EN PT

Урок 5.1: Основы соединений (JOIN) в SQL

В реляционных базах данных информация хранится в виде набора связанных таблиц. Чтобы извлекать из них осмысленные данные, необходимо уметь их соединять. Для этого в SQL используется операция JOIN. Она позволяет объединять строки из двух или более таблиц на основе связанных столбцов.

Этот урок закладывает фундамент для понимания JOIN как ключевой концепции для работы с реляционными данными.

Основная концепция JOIN

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

Представьте две таблицы: customer (клиенты) и payment (платежи). В таблице payment есть столбец customer_id, который указывает, какой клиент совершил платеж. JOIN позволяет "склеить" строки из этих двух таблиц, чтобы для каждого платежа видеть не просто ID клиента, а его имя и фамилию.

Как это работает:

  1. Вы указываете две таблицы, которые хотите соединить.
  2. Вы задаете условие соединения в блоке ON, например, customer.customer_id = payment.customer_id.
  3. База данных проходит по строкам, находит совпадающие пары и формирует из них новые, объединенные строки.

Визуализация:

  Таблица A (customer)      Таблица B (payment)
  +----+-------+            +----+----------+
  | id | name  |            | id | amount   |
  +----+-------+            +----+----------+
  | 1  | Ivan  | <-----\    | 1  | 100.00   |
  | 2  | Maria |       \--->| 1  | 50.00    |
  | 3  | Petr  |            | 3  | 200.00   |
  +----+-------+            +----+----------+

Стрелки показывают, как строки из таблицы payment находят "своего" клиента в таблице customer по совпадающему id.

Практическое применение

Давайте рассмотрим, как это выглядит в реальном SQL-запросе на примере базы данных Sakila.

  1. Получение списка клиентов и их платежей: Этот запрос соединяет таблицы customer и payment, чтобы рядом с каждым платежом показать имя и фамилию клиента.

    SELECT
        c.first_name,
        c.last_name,
        p.amount,
        p.payment_date
    FROM
        customer AS c
    JOIN
        payment AS p ON c.customer_id = p.customer_id;
    
    • JOIN payment AS p указывает, что мы присоединяем таблицу payment.
    • ON c.customer_id = p.customer_id — это условие, по которому строки считаются связанными.
    • c и p — это алиасы (псевдонимы), которые делают запрос короче и читабельнее.
  2. Получение списка фильмов и их языка: Соединим таблицы film и language, чтобы показать название каждого фильма и язык, на котором он представлен.

    SELECT
        f.title,
        l.name AS language
    FROM
        film AS f
    JOIN
        language AS l ON f.language_id = l.language_id;
    

    Здесь связь установлена по ключу language_id.

Основные выводы из этого урока

  • JOIN — это фундаментальная операция в SQL для работы с реляционными данными, позволяющая объединять таблицы.
  • Соединение происходит на основе условия, указанного в ON, которое определяет, как связаны строки.
  • Использование алиасов для таблиц (customer AS c) является хорошей практикой, которая улучшает читаемость запросов.
  • JOIN не изменяет исходные данные, а лишь создает временный результирующий набор строк.

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