JavaRush /Курси /SQL SELF /Вступ до об'єднання даних: JOIN

Вступ до об'єднання даних: JOIN

SQL SELF
Рівень 11 , Лекція 0
Відкрита

Сьогодні ми переходимо до однієї з найцікавіших тем у роботі з реляційними базами даних — об'єднання даних з кількох таблиць за допомогою JOIN. Це потужний інструмент, який відкриває двері до створення складних зв'язків і аналітики.

Уяви, що твоя база даних — це величезний комікс, де кожна розрізнена таблиця є окремим кадром. Щоб скласти цілісну історію, треба з'єднати ці кадри. Саме для цього тобі допоможе JOIN. Об'єднання даних — це процес, який дозволяє запиту витягнути інформацію з кількох таблиць і зв'язати її на основі заданих умов.

Реляційні бази даних побудовані навколо концепції зв'язків між таблицями. Кожна таблиця зберігає інформацію про конкретну сутність, і для повнішої картини ми часто хочемо зв'язати дані з різних таблиць. Наприклад:

  • Таблиця students містить список студентів.
  • Таблиця courses зберігає список курсів.
  • Таблиця enrollments показує, хто які курси відвідує.

Щоб дізнатися, який студент навчається на якому курсі, треба з'єднати ці таблиці. На співбесідах розробник, який вміє працювати з JOIN, виглядає дуже круто, бо це один з найзатребуваніших скілів у роботі з даними.

Основні типи об'єднань

У PostgreSQL існує кілька типів JOIN, і кожен з них спеціально створений для конкретних задач. Розберемо їх загалом, щоб не забивати голову складними прикладами зарано:

Тип JOIN Опис
INNER JOIN Повертає рядки, для яких є співпадіння в обох таблицях.
LEFT JOIN Повертає всі рядки з лівої таблиці, а з правої — тільки співпадаючі.
RIGHT JOIN Повертає всі рядки з правої таблиці, а з лівої — тільки співпадаючі.
FULL OUTER JOIN Повертає всі рядки з обох таблиць, заповнюючи NULL для відсутніх співпадінь.

Вибір одного з JOIN-ів залежить від твоєї задачі:

  • Якщо тобі потрібні лише співпадаючі дані з обох таблиць, використовуй INNER JOIN.
  • Якщо хочеш зберегти всі дані з однієї таблиці, а з іншої — тільки співпадіння, підійдуть LEFT JOIN або RIGHT JOIN.
  • Якщо потрібні всі дані з обох таблиць, навіть якщо вони не співпадають, використовуй FULL OUTER JOIN.

Давай розбиратися з цими всіма об'єднаннями прямо на практиці.

Приклад задачі — "Хто на якому курсі?"

Припустимо, у нас є три таблиці:

Таблиця students

id name
1 Otto
2 Anna
3 Peter

Таблиця courses

id title
101 Математика
102 Англійська

Таблиця enrollments

student_id course_id
1 101
2 102

Ці таблиці пов'язані так:

  • Поле id у students — унікальний ідентифікатор студента.
  • Поле id у courses — унікальний ідентифікатор курсу.
  • У таблиці enrollments стовпці student_id і course_id створюють зв'язок між студентами і курсами.

Припустимо, нам треба вирішити таке питання: який студент записаний на який курс?

Відповідь можна отримати за допомогою JOIN. Ми будемо з'єднувати таблиці на основі їх зв'язків:

  • З'єднуємо students і enrollments по id = student_id.
  • З'єднуємо enrollments і courses по course_id = id.

Ось як виглядає SQL-запит:

SELECT students.name, courses.title
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN courses ON enrollments.course_id = courses.id;

Що робить цей запит:

  • FROM enrollments — починаємо з таблиці, яка зв'язує студентів і курси.
  • JOIN students ON enrollments.student_id = students.id — приєднуємо до неї студентів, щоб отримати їх імена.
  • JOIN courses ON enrollments.course_id = courses.id — приєднуємо курси, щоб отримати назви.

Результат буде виглядати так:

name title
Otto Математика
Anna Англійська

Зверни увагу: якщо у студента немає жодного курсу, він не з'явиться у результаті — бо JOIN за замовчуванням строгий (INNER JOIN). Пізніше ми розберемо, як включати і таких студентів за допомогою LEFT JOIN.

Якщо у такому запиті тобі щось незрозуміло — не переймайся! Поступово розібратися з цим — мета наступних лекцій!

Навіщо це потрібно у реальному житті?

Тепер, коли ти розумієш, як з'єднувати таблиці, давай поговоримо про реальний світ. Ти коли-небудь замислювався, як працює інтернет-магазин? Наприклад, коли ти обираєш смартфон і бачиш відгуки інших користувачів.

  1. Таблиця products містить інформацію про товари.
  2. Таблиця reviews містить відгуки покупців.
  3. Таблиця customers містить інформацію про самих покупців

Щоб показати на сайті відгуки, треба об'єднати таблиці products, reviews і customers. Це і є JOIN у дії.

На що звернути увагу?

Перш ніж ми заглибимося у JOIN на наступних лекціях, ось кілька моментів, які варто запам'ятати:

  1. Порядок у JOIN важливий. Наприклад, LEFT JOIN повертає рядки з лівої таблиці, тому, змінюючи порядок, ти змінюєш результат.
  2. Працюй з невеликими таблицями. На початку уникай запитів на мільйони рядків. Не забувай, навіть найпростіший запит має бути зрозумілим.
  3. Звикай думати про зв'язки. Коли ти звикнеш бачити таблиці як частини однієї великої структури, робота з JOIN стане природною.

З сьогоднішнього дня ми почнемо ставати SQL-спеціалістами. У наступній лекції ти дізнаєшся, як використовувати INNER JOIN для витягування даних з двох таблиць. Це буде серйозний крок у твоєму навчанні PostgreSQL.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ