Введение в Joins в MySQL

MySQL Joins играет важную роль, когда нам нужно объединить две таблицы на основе одного или нескольких общих значений, совместно используемых двумя таблицами.

Пример : давайте рассмотрим, что у нас есть две таблицы, одна из них - таблица сотрудников, состоящая из employee_id, phn_no, salary и Department. Другая таблица - это таблица адресов, которая состоит из employee_id и address. Если нам нужно выяснить employee_id, отдел и адрес, то мы должны объединить обе таблицы с общим полем как employee_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. Внутреннее соединение
  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. Обе таблицы состоят из одного атрибута, каждый как столбец A и столбец B соответственно.

Таблица 1

Столбец А
1
1
2
3
4

Таблица 2

Колонна B
1
2
2
3
3
5

Запрос:

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

Выход:

Столбец А Колонна B
1 1
1 Значение NULL
2 2
Значение NULL 2
3 3
Значение NULL 3

2. Левое соединение

Это объединение возвращает все записи из левой таблицы и сопоставленные записи из правой таблицы.

Как показано на диаграмме выше, она состоит из всех записей таблицы A и общих записей из A и B.

Пример № 1:

Пользовательский ИД имя город
1 Хариш Cuttack
2 Дэвид Бангалор
3 Махеш Бхубанесвар
4 Сэм Kolkata

Таблица клиентов:

Номер заказа Количество Пользовательский ИД
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Стол заказов:

Мы узнаем customer_id, name и 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;

Выход:

Пользовательский ИД имяНомер заказа
1 Хариш значение NULL
2 Дэвид 19976
3 Махеш 99680
4 Сэм 19868

Как мы уже говорили, это левое соединение извлекало все идентификаторы клиентов из таблицы клиентов и общие идентификаторы между обеими таблицами. Для customer_id '1' он будет отображаться как 'null', потому что '1' customer_id отсутствует в таблице заказов.

Пример № 2:

Здесь у нас есть 2 таблицы, table1 и table2. Обе таблицы состоят из одного атрибута, каждый как столбец A и столбец B соответственно.

Таблица 1

Столбец А
1
1
2
2
3

Таблица 2

Колонна B
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;

Столбец А Колонна B
1 1
1 Значение NULL
2 2
2 2
3 Значение NULL

3. Правильное соединение

Это объединение возвращает все записи из правой таблицы и соответствующие записи из левой таблицы.

Вышеприведенная диаграмма показывает, что он выбирает все записи из таблицы B и общую запись, которая присутствует в обеих таблицах.

Пример:

Пользовательский ИД имя город
3 Махеш Бхубанесвар
4 Сэм Kolkata
5 ОЗУ Mumbai

Таблица клиентов:

Номер заказа Количество Пользовательский ИД
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Стол заказов:

Мы узнаем customer_id, name и 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;

Выход:

Пользовательский ИД имя Номер заказа
2 значение NULL 19976
3 Махеш 99680
4 Сэм 19868

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

4. Полное внешнее соединение

Полное внешнее соединение возвращает все записи из обеих таблиц, если имеется общее поле общего доступа.

Пример:

Пользовательский ИД имя город
3 Махеш Бхубанесвар
4 Сэм Kolkata
5 ОЗУ Mumbai

Таблица клиентов:

Номер заказа Количество Пользовательский ИД
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Стол заказов:

Мы узнаем customer_id, name и 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;

Выход:

Пользовательский ИД имя Номер заказа
2 значение NULL 19976
3 Махеш 99680
4 Сэм 19868
5 ОЗУ значение NULL

Это полное внешнее соединение извлекало весь идентификатор клиента из таблицы клиентов, а также из таблицы заказов.

5. Самостоятельное присоединение

Самостоятельное соединение - это обычное соединение, и здесь таблица объединяется только сама с собой.

emp_id имя Телефонный номер город Страна
1001 Р. Мадхван 9687687698 Бангалор Индия
1002 Гобу Шарма 9856453423 Пуна Индия
1003 Дебашиш Дас 8765456787 Mumbai Индия
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;

Выход :

Employee_name1 Employee_name2 e1.city
Гобу Шарма Амит Раут Пуна
Амит Раут Гобу Шарма Пуна

6. Перекрестное соединение

Это объединение приводит к результату, в котором количество строк в первой таблице умножается на строки во второй таблице. Этот вид результата называется декартовым произведением. Если мы используем предложение WHERE с этим соединением, то это будет работать как внутреннее соединение.

Пример:

Prod_id Наименование товара Prod_unit Идентификатор компании
1 Chex Mix штук 12
2 Cheez-он штук 15
3 Печенье штук 16

Таблица продуктов :

Идентификатор компании Название компании Company_city
15 Гурманы Дели
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
Chex Mix штук Гурманы
Cheez-он штук Гурманы
Печенье штук Гурманы
Chex Mix штук Джек н Джилл
Cheez-он штук Джек н Джилл
Печенье штук Джек н Джилл
Chex Mix штук натуральный
Cheez-он штук натуральный
Печенье штук натуральный

Вывод

Значение этих объединений очень важно при работе в сценариях в реальном времени, а также в некоторых других технологиях. В таких визуализациях, как Tableau и Power BI, объединения играют важную роль. Структурированная практика этого является ключом для внедрения этих новых методов и навыков.

Рекомендуемая статья

Это руководство по соединениям в MySQL. Здесь мы обсуждаем 6 лучших типов соединений в MySQL, таких как Inner, Left, Right, Full, Self, Cross и их примеры, а также Query и Output. Вы также можете просмотреть наши предлагаемые статьи, чтобы узнать больше -

  1. Лучшие 10 команд MySQL
  2. Введение в MySQL Operators
  3. MySQL против SQLite | Топ 14 Сравнение
  4. Лучшие 23 функции MySQL String
  5. Объясните команду вставки в MySQL с примерами
  6. Топ 6 отличий первичного ключа от внешнего ключа