Вступ до типів приєднань до SQL

Застереження приєднання в SQL служить для об'єднання рядків з двох або більше таблиць. Процес поєднання рядків залежить від стовпчика, який пов’язаний з ними. Чотири різних типи об'єднань у SQL названі внутрішнім з'єднанням, лівим об'єднанням, правом приєднання та повним об'єднанням. Перш ніж ми дійсно почнемо використовувати будь-який тип з'єднання, нам потрібна RDBMS або система управління реляційними базами даних, куди ми будемо завантажувати дані. Один з дуже простих способів зрозуміти приєднання - це використання діаграми Венна. Використання діаграми Венна дозволяє легко оцінити всі можливі та логічні відносини між різними наборами даних. Давайте зрозуміємо це по одному за допомогою діаграми Венна. Пізніше ми зрозуміємо різницю між ними на деяких практичних прикладах. Припустимо, у нашій базі даних є два набори даних, що зберігаються у вигляді таблиці перша та другої таблиці. Існує деяка залежність між двома таблицями, яка вказана у вигляді первинного ключа та поняття іноземного ключа. Якщо ви приєднаєтесь до двох таблиць, які мають якесь відношення, подання діаграми Венна сценарію буде чимось подібним,

Обсяг цього перекриття визначатиме ступінь схожості між двома таблицями, тобто Таблиця А та Таблиця B. Це означає, що кількість записів із таблиці 1, що співпадають із записами з другої таблиці, представлена ​​секцією перекриття. Це одна підмножина даних. Ми отримуємо чотири різних типи з'єднань на основі підмножини даних, які ми збираємо з двох таблиць.

Синтаксис приєднання:

SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Типи об'єднань у SQL

  1. Внутрішнє з'єднання
  2. Ліва приєднання
  3. Право приєднуйтесь
  4. Повне приєднання

Нижче ми детально пояснюємо різні типи приєднань.

1. Внутрішня приєднання

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

Синтаксис внутрішнього приєднання:

SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition

2. Ліва приєднання

У лівому з’єднанні ми вибираємо всі дані з лівої таблиці, а з правої таблиці вибираємо лише той набір даних, який відповідає умові, згаданому при з'єднанні (тут область 1 + 3)

Синтаксис лівого приєднання:

SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

3. Право приєднайтесь

Під час правого з'єднання ми вибираємо всі дані з правої таблиці, а з лівої таблиці вибираємо лише той набір даних, який відповідає умові, згаданому при об'єднанні (тут 3 + 2)

Синтаксис права приєднання:

SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

4. Повне приєднання

При повному об'єднанні всі записи утворюють обидві таблиці, об'єднуються та вибираються незалежно від умови, згаданої при виконанні з'єднання чи ні. (тут 1 + 2 + 3)

Синтаксис повного приєднання:

SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Приклади приєднань до SQL

Розглянемо дві таблиці, наведені нижче:

1. Приклад ORDER_DETAILS

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

ORDER_DETAILS Таблиця:

Order_ID No_of_Items Замовлення_ Сума Клієнт_Ід Дата замовлення
123 3 5500 P_1 20.01.2019
234 2 6500 Р_12 10.02.2019
345 1 10000 Р_13 27.05.2019
456 4 4000 P_14 07.11.2019
567 2 20656 P_1 15.12.2019
678 3 15000 P_11 27.10.2019

2. Приклад CUSTOMER_DETAILS

Тепер візьмемо ще одну таблицю, в якій будуть зберігатися реквізити замовника, щоб можна було доставити замовлення на їх відповідні адреси. Таким чином, в таблиці клієнтів будуть міститися реквізити клієнта, такі як ідентифікатор клієнта (cust_id), який буде унікальним для кожного клієнта. Тепер ім’я та прізвище зберігаються у полі під назвою - Cust_First_Name та Cust_Last_Name. В інших полях зберігатиметься така інформація, як ідентифікатор електронної пошти, номер мобільного телефону замовника разом з адресою, пінкодом, містом та штатом. Таким чином, ми можемо побачити, що наша таблиця клієнтів буде виглядати приблизно так:

Таблиця CUSTOMER_DETAILS:

Cust_Id Cust_First_Name Cust_Last_Name PIN-код Адреса Cust_Mobile Місто Держава Cust_email
P_50 Аліса Петро 111111 330 ксиз вул 123 Бангалор КА
Р_12 Джеймс Дуза 155511 Колонія 420 абс 234 Хайдерабад AP
P_15 Гаррі Поттер 123456 551 мг дороги 444 Ноїда Делі
P_40 Майлі Паркер 111121 11 футів дороги 224 Бангалор КА
P_10 Герман Буша 123423 34 - а вулиця вулиці 432 Делі Делі
P_18 Ден Коричневий 134523 50 -та незалежна дорога 145 Гуруграма Хар'яна
P_20 Джеймс Рассел 111111 101 мг дороги 678 Бангалор КА
P_1 Майлі Медісон 100011 45 - я макет кавераппи 987 Ченнаї TN

Тепер, використовуючи цей приклад, давайте розберемось у функціональності з'єднань. Ми можемо бачити, що зв'язок між двома таблицями, тобто таблицею ORDER_DETAILS та таблицею CUSTOMER_DETAILS, встановлюється ключем, який має значення ідентифікатора клієнта, тобто Customer_Id, який є первинним ключем у таблиці CUSTOMER_DETAILS та зовнішнім ключем у ORDER_DETAILS таблиця.

Тут слід зауважити кілька важливих моментів:

  • Не всі клієнти в нашій таблиці CUSTOMER_DETAILS розмістили запит на замовлення.
  • Не у всіх запитах замовлення, які є в нашій таблиці ORDER_DETAILS, є customer_id, який присутній у нашій таблиці CUSTOMER_DETAILS, а це означає, що для деяких замовлень немає детальної інформації про клієнта.

3. Внутрішня приєднання

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

Запит:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Вихід:

Cust_First_Name Cust_email No_of_Items Замовлення_ Сума Дата замовлення
Майлі 3 5500 20.01.2019
Джеймс 2 6500 10.02.2019
Майлі 2 20656 15.12.2019

4. Ліва приєднання

Ліве з'єднання дасть вам усі записи з лівої таблиці, тобто таблиці CUSTOMER_DETAILS. Якщо замовлення не зроблено замовником, воно поверне нульове значення для стовпців таблиці ORDER_DETAILS.

Запит:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Вихід:

Cust_First_Name Cust_email No_of_Items Замовлення_ Сума Дата замовлення
Аліса НУЛЬ НУЛЬ НУЛЬ
Джеймс 2 6500 10.02.2019
Гаррі НУЛЬ НУЛЬ НУЛЬ
Майлі НУЛЬ НУЛЬ НУЛЬ
Герман НУЛЬ НУЛЬ НУЛЬ
Ден НУЛЬ НУЛЬ НУЛЬ
Джеймс НУЛЬ НУЛЬ НУЛЬ
Майлі 3 5500 20.01.2019
Майлі 2 20656 15.12.2019

5. Право приєднайтесь

Правильно, Join приведе вам усі записи з правої таблиці, тобто таблиці ORDER_DETAILS. Якщо для замовлення не знайдено записів клієнтів, воно поверне нульове значення для стовпців таблиці CUSTOMER_DETAILS.

Запит:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Вихід:

Cust_First_Name Cust_email No_of_Items Замовлення_ Сума Дата замовлення
Майлі 3 5500 20.01.2019
Джеймс 2 6500 10.02.2019
НУЛЬ НУЛЬ 1 10000 27.05.2019
НУЛЬ НУЛЬ 4 4000 07.11.2019
Майлі 2 20656 15.12.2019
НУЛЬ НУЛЬ 3 15000 27.10.2019

6. Повне приєднання

Повне приєднання дасть вам усі записи, вказані з обох таблиць.

Запит:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Вихід:

Cust_First_Name Cust_email No_of_Items Замовлення_ Сума Дата замовлення
Аліса НУЛЬ НУЛЬ НУЛЬ
Джеймс 2 6500 10.02.2019
Гаррі НУЛЬ НУЛЬ НУЛЬ
Майлі НУЛЬ НУЛЬ НУЛЬ
Герман НУЛЬ НУЛЬ НУЛЬ
Ден НУЛЬ НУЛЬ НУЛЬ
Джеймс НУЛЬ НУЛЬ НУЛЬ
Майлі 3 5500 20.01.2019
Майлі 2 20656 15.12.2019
НУЛЬ НУЛЬ 1 10000 27.05.2019
НУЛЬ НУЛЬ 4 4000 07.11.2019
НУЛЬ НУЛЬ 3 15000 27.10.2019

Переваги приєднань до SQL

  1. Швидше виконання, що означає швидше завантаження потрібних стовпців.
  2. Оптимізовано, читабельно та зрозуміло
  3. Підвищення продуктивності.

Висновок

Як видно, ми використовуємо JOINs для додавання та отримання полів з різних таблиць.

  • Inner Join отримує записи, де виконується дана умова.
  • Left Join дасть вам усі рядки з лівої таблиці, навіть коли задана умова не відповідає.
  • Right Join дасть вам усі рядки з лівої таблиці, навіть коли задана умова не відповідає.
  • Full Join повертає всі рядки, коли в одній із таблиць є збіг.
  • Запити на приєднання можна використовувати з такими командами як: SELECT, INSERT, UPDATE, DELETE.
  • Приєднання також поєднується з різними пунктами на кшталт - GROUP BY, SUB QUERY, Where, AGGREGATE FUNCTIONS тощо.

Рекомендована стаття

Це був посібник щодо Типи приєднань у SQL. Тут ми обговорюємо різні типи приєднань до SQL та його переваги разом із прикладами. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Переваги NoSQL
  2. Інструменти управління SQL
  3. База даних у SQL
  4. Підстановка в SQL
  5. Топ 6 типів приєднань до MySQL з прикладами