Въведение в Съединения в MySQL
MySQL Joins играе важна роля, когато трябва да обединим две таблици заедно въз основа на една или повече общи стойности, споделяни от две таблици.
Пример : Нека помислим, че имаме две таблици, едната е таблицата на служителите, състояща се от служител_id, phn_no, заплата и отдел. Друга таблица е таблицата с адреси, която се състои от служител_id и адрес. Ако трябва да открием служител_id, отдел и адрес, тогава трябва да се присъединим и към двете таблици, споделящи общото поле като служител_ид.
Заявка :
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 | CSR | 800 |
1003 | ТО | 2000 |
Това е таблицата на служителите.
Emp_id | адрес |
1002 | Делхи |
1003 | Бангалор |
1005 | Bbsr |
Ето таблицата с адреси на тези служители. Основният ключ em_id на служителя на родителската таблица се използва като чужд ключ в адресната таблица, която е дъщерната таблица. Ще намерим em_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 | CSR | Делхи |
1003 | ТО | Бангалор |
Тъй като в горния пример emp_id 1002 и 1003 бяха общи между двете таблици, командата за присъединяване на вътрешно устройство извежда изхода само за тези служители.
Пример №2:
Тук имаме 2 таблици, table1 & table2. И двете таблици се състоят от един атрибут всяка като колона A и колона B съответно.
Маса 1
Колона A |
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;
изход:
Колона A | Колона Б |
1 | 1 |
1 | Нула |
2 | 2 |
Нула | 2 |
3 | 3 |
Нула | 3 |
2. Ляво съединение
Това присъединяване връща всички записи от лявата таблица и съвпадащите записи от дясната таблица.
Както показва диаграмата по-горе, тя се състои от всички записи на таблица A и общите от A и B.
Пример №1:
Клиентски номер | име | град |
1 | Хариш | Куттак |
2 | Дейвид | Бангалор |
3 | Махеш | Бхубанешвар |
4 | Сам | Колката |
Клиентска таблица:
ORDER_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;
изход:
Клиентски номер | име | ORDER_ID |
1 | Хариш | нула |
2 | Дейвид | 19976 |
3 | Махеш | 99680 |
4 | Сам | 19868 |
Докато обсъждахме това присъединяване вляво извади целия клиентски идентификатор от клиентската таблица и общите между двете таблици. За customer_id '1' ще се покаже като 'null', тъй като '1' customer_id не присъства в таблицата с поръчки.
Пример №2:
Тук имаме 2 таблици, table1 & table2. И двете таблици се състоят от един атрибут всяка като колона A и колона B съответно.
Маса 1
Колона A |
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;
Колона A | Колона Б |
1 | 1 |
1 | Нула |
2 | 2 |
2 | 2 |
3 | Нула |
3. Право присъединяване
Това присъединяване връща всички записи от дясната таблица и съвпадащите от лявата таблица.
Горната диаграма показва, че извлича всички записи от таблица Б и общите, които присъстват и в двете таблици.
Пример:
Клиентски номер | име | град |
3 | Махеш | Бхубанешвар |
4 | Сам | Колката |
5 | овен | Мумбай |
Клиентска таблица:
ORDER_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;
изход:
Клиентски номер | име | ORDER_ID |
2 | нула | 19976 |
3 | Махеш | 99680 |
4 | Сам | 19868 |
Тъй като ние извършихме правилно присъединяване тук, така заявката извади целия идентификационен номер на клиента от таблицата за поръчки и общите записи, които са в двете таблици.
4. Пълно външно присъединяване
Пълното външно присъединяване връща всички записи от двете таблици, ако има общо поле, споделено.
Пример:
Клиентски номер | име | град |
3 | Махеш | Бхубанешвар |
4 | Сам | Колката |
5 | овен | Мумбай |
Клиентска таблица:
ORDER_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;
изход:
Клиентски номер | име | ORDER_ID |
2 | нула | 19976 |
3 | Махеш | 99680 |
4 | Сам | 19868 |
5 | овен | нула |
Това пълно външно присъединяване извади целия идентификационен номер на клиента от таблицата на клиента, както и таблицата за поръчки.
5. Самостоятелно присъединяване
Самосъединяването е редовно присъединяване и тук масата се присъединява само към себе си.
Emp_id | име | Телефон не | град | Страна |
1001 | Р. Мадван | 9687687698 | Бангалор | Индия |
1002 | Гобу Шарма | 9856453423 | Pune | Индия |
1003 | Debasish Das | 8765456787 | Мумбай | Индия |
1004 | Amit Rout | 4567788635 | Pune | Индия |
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;
Резултат :
Employee_name1 | Employee_name2 | e1.city |
Гобу Шарма | Amit Rout | Pune |
Amit Rout | Гобу Шарма | Pune |
6. Кръстосана връзка
Това присъединяване произвежда резултат, при който броят на редовете в първата таблица се умножава с редовете във втората таблица. Този вид резултат се нарича декартов продукт. Ако използваме клаузата WHERE с това присъединяване, то това ще работи като вътрешно присъединяване.
Пример:
Prod_id | Име на продукта | Prod_unit | Company_id |
1 | Chex смес | бр | 12 |
2 | Cheez-то | бр | 15 |
3 | бисквит | бр | 16 |
Таблица с продукти :
Company_id | Име на фирмата | Company_city |
15 | Foodies | Делхи |
16 | Джак н Джил | Куттак |
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 |
Chex смес | бр | Foodies |
Cheez-то | бр | Foodies |
бисквит | бр | Foodies |
Chex смес | бр | Джак н Джил |
Cheez-то | бр | Джак н Джил |
бисквит | бр | Джак н Джил |
Chex смес | бр | естествен |
Cheez-то | бр | естествен |
бисквит | бр | естествен |
заключение
Значението на тези съединения е много важно, докато се работи в сценарии в реално време, както и в някои други технологии. При визуализации като Tableau и Power BI, съединенията играят жизненоважна роля. Структурираната практика на това е от ключово значение за вграждането на тези нови техники и умения.
Препоръчителен член
Това е ръководство за присъединяванията в MySQL. Тук обсъждаме топ 6 вида обединения в MySQL като Inner, Left, Right, Full, Self, Cross и неговите примери, заедно със заявка и изход. можете също да прегледате нашите предложени статии, за да научите повече -
- Топ 10 MySQL команди
- Въведение в MySQL Оператори
- MySQL срещу SQLite | Топ 14 сравнение
- Топ 23 MySQL String функции
- Обяснете командата за вмъкване в MySQL с примери
- Топ 6 разлики между първичен и външен ключ