Оператор SQL INNER JOIN: приклади, синтаксис і особливості

Розробка будь-якої бази даних має на увазі нетільки створення і наповнення таблиць різноманітною інформацією, але і подальшу роботу з даними. Для коректного виконання різноманітних завдань з вибору даних з таблиць і формування звітів, використовується стандартна конструкція Select.

sql inner join приклад

Вибірки даних з таблиць

Якщо розглядати задачу вибору даних абопобудови деякого звіту, можна визначити рівень складності даної операції. Як правило, при роботі з серйозними (за обсягом інформації) базами даних, які формуються, наприклад, в інтернет-магазинах або великих компаніях, вибірка даних не буде обмежуватися лише однією таблицею. Як правило, вибірки можуть бути з досить великої кількості не тільки пов'язаних між собою таблиць, але і вкладених запитів / підзапитів, які складає сам програміст, в залежності від поставленої перед ним завдання. Для вибірки з однієї таблиці можна використовувати найпростішу конструкцію:

Select * from Person

де Person - ім'я таблиці, з якої необхідно зробити вибірку даних.

Якщо ж буде необхідність вибрати дані з декількох таблиць, можна використовувати одну з стандартних конструкцій для об'єднання декількох таблиць.

Способи підключення додаткових таблиць

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

  1. Оператор Inner Join.
  2. Left Join або, це другий спосіб запису, Left Outer Join.
  3. Cross Join.
  4. Full Join.

Використання операторів об'єднання таблиць на практиці можна засвоїти, розглянувши застосування оператора SQL - Inner Join. Приклад його використання буде виглядати наступним чином:

Select * from Person

Inner join Subdivision on Su_Person = Pe_ID

Мова SQL і оператор Join Inner Join можнавикористовувати не тільки для об'єднання двох і більше таблиць, але і для підключення інших підзапитів, що значно полегшує роботу адміністраторів бази даних і, як правило, може значно прискорити виконання певних, складних за структурою запитів.

Об'єднання даних в таблицях через підрядник

оператор sql inner join приклади

Якщо розглядати підключення великої кількості підзапитів і складання даних в єдину таблицю рядок за рядком, то можна використовувати також оператори Union, і Union All.

Застосування цих конструкцій буде залежати від поставленої перед розробником завдання і результату, якого він хоче досягти в результаті.

Опис оператора Inner Join

У більшості випадків для об'єднання декількохтаблиць в мові SQL використовується оператор Inner Join. Опис Inner Join в SQL досить просте для розуміння середньостатистичного програміста, який тільки починає розбиратися в базах даних. Якщо розглянути опис механізму роботи цієї конструкції, то отримаємо таку картину. Логіка оператора в цілому побудована на можливості перетину і вибірки тільки тих даних, які є в кожної з вхідних в запит таблиць.

Якщо розглянути таку роботу з точки зору графічної інтерпретації, то отримаємо структуру оператора SQL Inner Join, приклад якої можна показати за допомогою такої схеми:

sql inner join синтаксис приклади

Наприклад, ми маємо дві таблиці, схема якихпоказана на малюнку. Вони в свою чергу, мають різну кількість записів. У кожній з таблиць є поля, які пов'язані між собою. Якщо спробувати пояснити роботу оператора виходячи з малюнка, то повертається результат буде у вигляді набору записів з двох таблиць, де номери пов'язаних між собою полів збігаються. Простіше кажучи, запит поверне тільки ті записи (з таблиці номер два), дані про яких є в таблиці номер один.

Синтаксис оператора Inner Join

Як вже говорилося раніше, оператор Inner Join, асаме його синтаксис, надзвичайно простий. Для організації зв'язків між таблицями в межах однієї вибірки досить буде запам'ятати і використовувати наступну принципову схему побудови оператора, яка прописується в одну строчку програмного SQL-коду, а саме:

  • Inner Join [Ім'я таблиці] on [ключове поле з таблиці, до якої підключаємо] = [Ключовому полю підключається таблиці].

Для зв'язку в даному операторі використовуються головніключі таблиць. Як правило, в групі таблиць, які зберігають інформацію про співробітників, раніше описані Person і Subdivision мають хоча б по одній схожою записи. Отже, розглянемо докладніше оператор SQL Inner Join, приклад якого був показаний дещо раніше.

Приклад та опис підключення до вибірці однієї таблиці

У нас є таблиця Person, де зберігаєтьсяінформація про всіх співробітників, що працюють в компанії. Відразу відзначимо, що головним ключем даної таблиці є поле - Pe_ID. Якраз по ньому і буде йти зв'язка.

Друга таблиця Subdivision буде зберігатиінформацію про підрозділи, в яких працюють співробітники. Вона, в свою чергу, пов'язана з допомогою поля Su_Person з таблицею Person. Про що це говорить? Виходячи зі схеми даних можна сказати, що в таблиці підрозділів для кожного запису з таблиці «Співробітники» буде інформація про відділ, в якому вони працюють. Саме по цьому зв'язку і буде працювати оператор Inner Join.

Для більш зрозумілого використання розглянемо оператор SQL Inner Join (приклади його використання для однієї і двох таблиць). Якщо розглядати приклад для однієї таблиці, то тут все досить просто:

Select * from Person

Inner join Subdivision on Su_Person = Pe_ID

Приклад підключення двох таблиць і підзапиту

sql і оператор join inner join

Оператор SQL Inner Join, приклади використанняякого для вибірки даних з декількох таблиць можна організувати як вказано вище, працює по чуть ускладненому принципом. Для двох таблиць ускладнити завдання. Скажімо, у нас є таблиця Depart, в якій зберігається інформація про всі відділах в кожному з підрозділів. У в цю таблицю записаний номер підрозділу і номер співробітника і потрібно доповнити вибірку даних назвою кожного відділу. Забігаючи вперед, варто сказати, що для вирішення цього завдання можна скористатися двома методами.

Перший спосіб полягає в підключенні таблиці відділів до вибірці. Організувати запит в цьому випадку можна таким чином:

Select Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name from Person

Inner join Subdivision on Su_Person = Pe_ID

Inner join Depart on Su_Depart = Dep_ID and Pe_Depart = Dep_ID

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

Select Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name from Person

Inner join Subdivision on Su_Person = Pe_ID

Inner join (Select Dep_ID, Dep_Name, Pe_Depart from Depart) as T on Su_Depart = Dep_ID and Pe_Depart = Dep_ID

Варто зазначити, що така конструкція не завждиможе прискорити роботу запиту. Іноді бувають випадки, коли доводиться використовувати додатково вибірку даних в тимчасову таблицю (якщо їх обсяг занадто великий), а потім її об'єднувати з основною вибіркою.

Приклад використання оператора Inner Join для вибірок з великої кількості таблиць

Побудова складних запитів на увазівикористання для вибірки даних значної кількості таблиць і підзапитів, пов'язаних між собою. Цим вимогам може задовольнити SQL Inner Join синтаксис. Приклади використання оператора в даному випадком можуть ускладнюватися не тільки вибірками з багатьох місць зберігання даних, але і з великої кількості вкладених підзапитів. Для конкретного прикладу можна взяти вибірку даних з системних таблиць (оператор Inner Join SQL). Приклад - 3 таблиці - в цьому випадку буде мати досить складну структуру.

inner join sql приклад 3 таблиці

В даному випадку підключено (до основної таблиці) ще три додатково і введено кілька умов вибору даних.

При використанні оператора Inner Join вартопам'ятати про те, що чим складніше запит, тим довше він буде реалізовуватися, тому варто шукати шляхи більш швидкого виконання і вирішення поставленого завдання.

inner join sql приклад 3 таблиці

висновок

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

</ P>
сподобалося:
0
Схожі статті
Синтаксис: що вивчає цей розділ.
Нескінченний for (Java) цикл
Як складати SQL-запити - докладні
Coalesce sql: опис, особливості
MySQL JOIN: опис, приклад використання
Перетворення типів. Функції Round і Trunc
HAVING SQL: опис, синтаксис, приклади
Оператор АЗС: кар'єрні можливості
Оператор ЕОМ
Популярні пости
up