Вступ до об'єднань у 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. Внутрішня приєднання
Внутрішнє з'єднання повертає значення, яке відповідає обом таблицям.
Ця частина надходить у висновок, як показано на малюнку вище.
Приклад №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 та його приклади, а також запит та вихід. Ви також можете ознайомитись із запропонованими нами статтями, щоб дізнатися більше -
- 10 найкращих команд MySQL
- Ознайомлення з операторами MySQL
- MySQL проти SQLite | Топ 14 Порівняння
- Топ 23 Функції рядка MySQL
- Поясніть команду Вставка в MySQL з прикладами
- Топ-6 відмінностей первинного ключа від зовнішнього ключа