English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Объединение таблиц SQL (Join)

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

Основы SQL-соединения

До сих пор все запросы, которые вы видели, были сосредоточены на одной таблице. Но на самом деле, вам часто нужно запрашивать две или более таблиц и получить результат их объединения. Это технически называется соединением,因为它 включает объединение таблиц по общим полям (Внешний ключ)Связь различных таблиц для создания нового вида данных.

Чтобы легко понять это, давайте посмотрим наemployeesиdepartmentsТаблицы. Здесь столбец dept id таблицы 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            |
+---------+------------------+
Таблица: employees
Таблица: departments

Примечание:Для связи таблиц данные из столбцов, используемых для связи, должны соответствовать, а не имя столбца.

Тип связи

Тип связи, созданной при создании связи таблиц, влияет на строки, отображаемые в результатах запроса. Вы можете создать следующие типы связей:

Внутренняя связь (Inner join)

Связь возвращает только строки, у которых есть соответствующие элементы в обоих таблицах. Например, вы можете связать таблицыdepartmentsТаблицы связаны друг с другом, чтобы создать результат, показывающий отдел по имени каждого сотрудника. Внутренняя связь не включает сотрудников без информации о отделе в результаты, и отделы без сотрудников также не включаются в результаты.

В следующей главе мы будем изучать информацию оВнутренняя связьДля получения дополнительной информации.

Внешние соединения (Outer join)

Внешние соединения являются расширением внутренних соединений. Даже если внешние соединения не имеют соответствующих строк в таблице соединения, они все равно возвращают эти строки. Внешние соединения имеют три типа: левое соединение (left join))right join)) и полные соединения (full join))

Мы будем более подробно изучать эти варианты внешних соединений в следующих главах.

Крестовые соединения (Cross join)

Крестовые соединения - это соединения без условий. Каждая строка одного таблицы объединяется с каждой строкой другой таблицы. Этот тип результатного набора называется кардинальным произведением или крестовым произведением. Например:employeesиdepartmentsКрестовые соединения между таблицами создают результат, в котором для каждого возможного combinations сотрудник/отдел есть строка.

В следующих главах мы будем изучать информацию оКрестовые соединенияДля получения дополнительной информации.