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

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

22-01-2017, 20:30
3 329
Розробка будь-якої бази даних передбачає не тільки створення і наповнення таблиць різноманітною інформацією, але і подальшу роботу з даними. Для коректного виконання різноманітних завдань по вибору даних з таблиць і формування звітів, використовується стандартна конструкція Select.

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

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




Select * from Person

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

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

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




Select * from Person Inner join Subdivision on Su_Person = Pe_ID

Мова SQL і оператор Join 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 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 варто пам'ятати про те, що чим складніше запит, тим довше він буде реалізовуватися, тому варто шукати шляхи більш швидкого виконання і вирішення поставленого завдання.

Висновок

У підсумку хотілося б сказати одне: робота з базами даних - це не найскладніше, що є в програмуванні, тому при бажанні абсолютно кожна людина зможе оволодіти знаннями щодо побудови баз даних, а згодом, набравшись досвіду, вийде працювати з ними на професійному рівні.
Цікаво по темі
MySQL JOIN: опис, приклад використання команди і рекомендації
MySQL JOIN: опис, приклад використання команди і рекомендації
Розробка баз даних інтернет-ресурсів практично ні в чому не відрізняється від стандартних баз даних, розроблених у системі MS SQL SERVER. Як правило,
Команди SQL-запитів
Команди SQL-запитів
SQL – один з найпоширеніших мов програмування для створення та управління базою даних, а також для проведення різноманітних дій з самими даними.
SQL Where: способи застосування та приклади
SQL Where: способи застосування та приклади
Для вибору даних з бази використовується конструкція Select[набор данних]from[имя таблици]. Як показує досвід, в 80 % випадків використання запитів
HAVING SQL: опис, синтаксис, приклади
HAVING SQL: опис, синтаксис, приклади
Серед інших параметрів оператора SELECT мови SQL параметр HAVING є вкрай корисним. Це стосується тих випадків, коли результуючу вибірку потрібно не
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
Основні особливості вкладених запитів. Як побудувати в MySQL запит в запиті. Для чого необхідні вкладені запити. Приклад вкладеного запиту MySQL.
MySQL select select from: оператор вибірки
MySQL select select from: оператор вибірки
MySQL - одна з найпопулярніших систем управління базами даних (СУБД). У даній статті ми розглянемо базову функціональність оператора вибірки SELECT,