# Операции объединения

Операции **объединения** в SQL позволяют соединять данные из **двух и более таблиц**. Основные виды объединений — это **JOIN**, но также есть операции **UNION** для объединения наборов строк.

***

### 1️⃣ **JOIN** (соединение таблиц по ключу)

#### Виды:

| Тип JOIN          | Что делает                                                                                      |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| `INNER JOIN`      | Возвращает строки, где есть совпадения в обеих таблицах                                         |
| `LEFT JOIN`       | Берёт все строки из левой таблицы + совпадения из правой (если нет → NULL)                      |
| `RIGHT JOIN`      | Берёт все строки из правой таблицы + совпадения из левой (если нет → NULL)                      |
| `FULL OUTER JOIN` | Берёт все строки из обеих таблиц, несопоставленные поля → NULL                                  |
| `CROSS JOIN`      | Декартово произведение таблиц (каждая строка левой таблицы соединяется с каждой строкой правой) |

**Пример INNER JOIN:**

```sql
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.id;
```

→ Только сотрудники, у которых есть отдел.

***

### 2️⃣ **UNION / UNION ALL** (объединение результатов запросов)

* `UNION` — объединяет результаты двух SELECT, **удаляя дубликаты**.
* `UNION ALL` — объединяет все строки **с сохранением дубликатов**.

**Пример:**

```sql
SELECT name FROM employees
UNION
SELECT name FROM managers;
```

→ Все уникальные имена из обеих таблиц.

**UNION ALL:**

```sql
SELECT name FROM employees
UNION ALL
SELECT name FROM managers;
```

→ Все имена, включая повторяющиеся.

***

#### 3️⃣ Кратко:

| Операция          | Что объединяет    | Особенности                                             |
| ----------------- | ----------------- | ------------------------------------------------------- |
| JOIN              | Таблицы по ключу  | Варианты INNER, LEFT, RIGHT, FULL, CROSS                |
| UNION / UNION ALL | Результаты SELECT | UNION убирает дубликаты, UNION ALL сохраняет все строки |
