Вступ до об'єднань у MySQL

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

Приклад . Давайте розглянемо, що у нас є дві таблиці, одна - таблиця працівників, що складається з найменування співробітника, phn_no, зарплати та відділу. Ще одна таблиця - це адресна таблиця, яка складається з_податника та адреси. Якщо нам потрібно дізнатись службовий_ід, відділ та адресу, тоді ми повинні приєднати обидві таблиці, що розділяють загальне поле як службовий_ід.

Запит :

SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;

Топ 6 типів приєднань до MySQL

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

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

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

Внутрішнє з'єднання повертає значення, яке відповідає обом таблицям.

Ця частина надходить у висновок, як показано на малюнку вище.

Приклад №1:

Emp_id Відділ Зарплата
1001 ІТ 1000
1002 КСВ 800
1003 ІТ 2000 рік

Це стіл працівника.

Emp_id Адреса
1002 Делі
1003 Бангалор
1005 Bbsr

Ось таблиця адрес цих працівників. Первинний ключ працівника батьківської таблиці emp_id використовується як зовнішній ключ у адресній таблиці, яка є дочірньою таблицею. Ми знайдемо emp_id, відділ та адресу одного працівника за допомогою внутрішнього з'єднання. Оскільки внутрішні стани з'єднання, він витягує записи, які присутні / є загальними в обох таблицях.

Запит:

SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;

Ми надаємо псевдонім до назви таблиці просто, щоб уникнути більше часу. У наведеному вище запиті ми використовуємо псевдонім 'emp' для таблиці співробітників та 'ads' для адресної таблиці.

Вихід:

Emp_id Відділ Адреса
1002 КСВ Делі
1003 ІТ Бангалор

Оскільки у вищенаведеному прикладі emp_id 1002 та 1003 були загальними між обома таблицями, команда внутрішнього з'єднання отримує вихід лише для цих службовців.

Приклад №2:

Тут ми маємо 2 таблиці, table1 та table2. Обидві таблиці складаються з одного атрибута, кожен як стовпця А, так і стовпця В відповідно.

Таблиця1

Стовпець А
1
1
2
3
4

Таблиця2

Стовпець В
1
2
2
3
3
5

Запит:

If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;

Вихід:

Стовпець А Стовпець В
1 1
1 Нуль
2 2
Нуль 2
3 3
Нуль 3

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

Це з'єднання повертає всі записи з лівої таблиці та відповідні записи з правої таблиці.

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

Приклад №1:

Customer_id Ім'я Місто
1 Харіш Cuttack
2 Девід Бангалор
3 Махеш Bhubaneswar
4 Сем Колката

Таблиця клієнтів:

Order_id Сума Customer_id
19868 рік 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Таблиця замовлень:

Ми дізнаємося, що користувач customer_id, ім’я та order_id пов’язані за допомогою лівого з'єднання.

Запит:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;

Вихід:

Customer_id Ім'яOrder_id
1 Харіш нуль
2 Девід 19976
3 Махеш 99680
4 Сем 19868 рік

Коли ми обговорювали це з'єднання зліва, отримано весь ідентифікатор клієнта із таблиці клієнтів та загальні між обома таблицями. Для customer_id '1' він відображатиметься як 'null', оскільки '1' customer_id відсутній у таблиці замовлень.

Приклад №2:

Тут ми маємо 2 таблиці, table1 та table2. Обидві таблиці складаються з одного атрибута, кожен як стовпця А, так і стовпця В відповідно.

Таблиця1

Стовпець А
1
1
2
2
3

Таблиця2

Стовпець В
1
2
2
4
4
5
5

Запит:

If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;

Стовпець А Стовпець В
1 1
1 Нуль
2 2
2 2
3 Нуль

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

Це з'єднання повертає всі записи з правої таблиці та відповідні з лівої таблиці.

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

Приклад:

Customer_id Ім'я Місто
3 Махеш Bhubaneswar
4 Сем Колката
5 ОЗП Мумбаї

Таблиця клієнтів:

Order_id Сума Customer_id
19868 рік 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Таблиця замовлень:

Ми дізнаємося, що пов’язані з ним customer_id, ім’я та order_id, використовуючи право з'єднання.

Запит:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;

Вихід:

Customer_id Ім'я Order_id
2 нуль 19976
3 Махеш 99680
4 Сем 19868 рік

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

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

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

Приклад:

Customer_id Ім'я Місто
3 Махеш Bhubaneswar
4 Сем Колката
5 ОЗП Мумбаї

Таблиця клієнтів:

Order_id Сума Customer_id
19868 рік 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Таблиця замовлень:

Ми дізнаємося, що пов’язані з ним customer_id, ім'я та order_id, використовуючи повне зовнішнє з'єднання.

Запит:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;

Вихід:

Customer_id Ім'я Order_id
2 нуль 19976
3 Махеш 99680
4 Сем 19868 рік
5 ОЗП нуль

Це повне зовнішнє з'єднання отримало весь ідентифікатор клієнта з таблиці клієнтів, а також таблицю замовлень.

5. Самостійне приєднання

Самостійне приєднання - це регулярне приєднання, і тут таблиця поєднується лише з собою.

Emp_id Ім'я Номер телефону Місто Країна
1001 Р. Мадхван 9687687698 Бангалор Індія
1002 Гобу Шарма 9856453423 Пуне Індія
1003 Debasish Das 8765456787 Мумбаї Індія
1004 Аміт Рут 4567788635 Пуне Індія
1005 Самбіт Кар 8789887873 Хайдерабад Індія

Ось таблиця працівників, що складається з декількох полів. Ми з’ясуємо працівників, які проживають в одному місті.

Запит :

SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;

Вихід :

Ім'я співробітника1 Ім'я співробітника2 e1.city
Гобу Шарма Аміт Рут Пуне
Аміт Рут Гобу Шарма Пуне

6. Перехресне з'єднання

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

Приклад:

Prod_id Назва продукту Прод_уніт Company_id
1 Шекс-суміш Шт 12
2 Сир-це Шт 15
3 Бісквіт шт 16

Таблиця товару :

Company_id Назва компанії Компанія_сіті
15 Foodies Делі
16 Джек н Джилл Cuttack
17 Природні Бангалор

Таблиця компанії :

До цих таблиць ми застосуємо перехресне з'єднання.

Запит :

SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;

Вихід :

p.product_name p.prod_unit c.company_name
Шекс-суміш Шт Foodies
Сир-це Шт Foodies
Бісквіт Шт Foodies
Шекс-суміш Шт Джек н Джилл
Сир-це Шт Джек н Джилл
Бісквіт Шт Джек н Джилл
Шекс-суміш Шт Природні
Сир-це Шт Природні
Бісквіт Шт Природні

Висновок

Значення цих приєднань дуже важливо під час роботи в режимі реального часу, а також у деяких інших технологіях. У візуалізаціях, таких як Tableau та Power BI, приєднання грають життєво важливу роль. Структурована практика цього є ключовою для впровадження цих нових технік та навичок.

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

Це посібник з приєднаннями до MySQL. Тут ми обговорюємо 6 найкращих типів об'єднань у MySQL, як Inner, Left, Right, Full, Self, Cross та його приклади, а також запит та вихід. Ви також можете ознайомитись із запропонованими нами статтями, щоб дізнатися більше -

  1. 10 найкращих команд MySQL
  2. Ознайомлення з операторами MySQL
  3. MySQL проти SQLite | Топ 14 Порівняння
  4. Топ 23 Функції рядка MySQL
  5. Поясніть команду Вставка в MySQL з прикладами
  6. Топ-6 відмінностей первинного ключа від зовнішнього ключа