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

Операции **объединения** в 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 сохраняет все строки |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/bazy-dannykh/operacii-obedineniya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
