Зарегистрируйтесь, чтобы продолжить обучение

Введение SQL: Join

Под капотом практически любой IT-системы, приложения или сайта есть базы данных. Их используют для хранения, чтения, а также анализа данных. В рамках этого курса речь пойдет о работе с табличными (реляционными) базами данных. Все примеры, как обычно, будут относиться к СУБД PostgreSQL.

Зачем нужно объединять несколько таблиц

Правильно организованные табличные базы хранят данные по правилам нормализации данных. В нормализованном виде информация о разных сущностях хранится в разных таблицах.

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

Первую таблицу мы назовем authors и будем хранить в ней идентификатор, имя и страну автора:

author_id author_name country
100 Александр Пушкин Россия
101 Лев Толстой Россия
102 Марк Твен США

Для второй таблицы мы выберем имя books и запишем туда идентификатор, название, ссылку на автора и дату публикации книги:

book_id title author_id published
1001 Евгений Онегин 100 1833
1002 Руслан и Людмила 100 1820
1003 Война и мир 101 1867
1004 Приключения Тома Сойера 102 1876
1005 Приключения Гекльберри Финна 102 1884

При этом эти таблицы связаны — для каждой книги хранится ссылка на ее автора в поле books.author_id.

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

Так выглядит ожидаемый результат:

author_name country title published
Александр Пушкин Россия Евгений Онегин 1833
Александр Пушкин Россия Руслан и Людмила 1820
Лев Толстой Россия Война и мир 1867
Марк Твен США Приключения Тома Сойера 1876
Марк Твен США Приключения Гекльберри Финна 1884

Мы дополнили информацию о книге данными о ее авторе, соединив данные из двух таблиц. Подобные объединения данных — это типичная задача на практике.

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

В конце курса мы научимся использовать альтернативные инструменты:

  • Подзапросы
  • Обобщенные табличные выражения (Common Table Expressions — CTE)
  • Представления (VIEW)

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff