Объединение таблиц в SQL

В этом уроке вы узнаете, как объединить две таблицы.

Все запросы, которые вы видели до сих пор, были связаны с одной таблицей. В реальной жизни часто нужно запросить две или более таблиц одновременно и получить объединенный набор результатов. Технически это называется объединением (join), поскольку оно подразумевает объединение различных таблиц на основе общего поля между ними (внешнего ключа) для создания новых представлений данных.

Давайте рассмотрим таблицы сотрудников employees и отделов departments. Столбец dept_id таблицы employees является внешним ключом для таблицы departments. Поэтому эти две таблицы можно объединить, чтобы получить «комбинированные» данные. 

Таблица employees Таблица departments
+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+
+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+

Примечание. Чтобы объединить таблицы, должны совпадать данные столбцов, которые используются для объединения. Имена столбцов не обязаны совпадать.

Виды объединений таблиц

При объединении таблиц в запросе указывается тип объединения, который влияет на строки, которые появятся в результатов. В SQL доступны следующие виды объединений:

Inner Join

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

Например, вы можете объединить таблицы сотрудников employees и отделов departments, чтобы создать набор результатов, показывающий название отдела для каждого сотрудника. При inner join сотрудники, для которых нет информации об отделе, не включаются в набор результатов, как и отделы, в которых нет сотрудников.

Подробнее об inner join мы поговорим в следующей статье.

Outer Join

Outer join — это расширение inner join. Outer join возвращает строки, даже если они не имеют связанных строк в объединенной таблице. Существует три типа outer join: left outer join, right outer join и full outer join.

Подробнее об этих разновидностях outer join мы поговорим в следующих статьях.

Cross Join

Cross join — это соединения без условия соединения. Каждая строка одной таблицы объединяется с каждой строкой другой таблицы. Такой тип набора результатов называется декартовым или перекрестным произведением.

Например, cross join между таблицами сотрудников employees и отделов departments вернет набор результатов с одной строкой для каждой возможной комбинации «сотрудники/отделы».

Более подробно о cross join мы поговорим в следующих статьях.

 

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©