Теория множеств для SQL JOIN

Объединение данных в SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Диаграммы Венна и теория множеств

Рисунок с тремя диаграммами Венна: UNION, INTERSECT и EXCEPT. В UNION два перекрывающихся круга полностью окрашены зелёным. В INTERSECT окрашена только область пересечения. В EXCEPT зелёным выделена только часть левого круга, не пересекающаяся с правым.

Объединение данных в SQL

Диаграммы Венна и теория множеств

Три диаграммы Венна, две из которых затемнены. В фокусе только UNION: два перекрывающихся круга полностью окрашены зелёным.

Объединение данных в SQL

Диаграмма UNION

  • UNION принимает две таблицы и возвращает все записи из обеих

Диаграмма с левой и правой таблицами. Справа показано, что происходит при выполнении операции UNION над двумя таблицами.

Объединение данных в SQL

Диаграмма UNION ALL

  • UNION ALL принимает две таблицы и возвращает все записи из обеих, включая дубликаты

Диаграмма с левой и правой таблицами. Справа показано, что происходит при выполнении операции UNION ALL над двумя таблицами.

Объединение данных в SQL

Синтаксис UNION и UNION ALL

Синтаксис UNION

SELECT *
FROM left_table
UNION
SELECT *
FROM right_table;

Синтаксис UNION ALL

SELECT *
FROM left_table
UNION ALL
SELECT *
FROM right_table;
Объединение данных в SQL

Синтаксис UNION и UNION ALL

Диаграмма с левой и правой таблицами. Справа показан результат операции UNION. Стрелки указывают, что обе таблицы должны иметь одинаковое количество столбцов одинаковых типов.

Объединение данных в SQL

Синтаксис UNION и UNION ALL

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

Объединение данных в SQL

Таблица монархов

SELECT *
FROM monarchs;
| country        | continent   | monarch                 |
|----------------|-------------|-------------------------|
| Brunei         | Asia        | Hassanal Bolkiah        |
| Oman           | Asia        | Haitham bin Tarik       |
| Norway         | Europe      | Harald V                |
| United Kingdom | Europe      | Charles III             |
Объединение данных в SQL

Премьер-министры и монархи

SELECT monarch AS leader, country
FROM monarchs
UNION
SELECT prime_minister, country
FROM prime_ministers
ORDER BY country, leader
LIMIT 10;
Объединение данных в SQL

Результат UNION

|-------------------------|----------------|
| leader                  | country        |
|-------------------------|----------------|
| Anthony Albanese        | Australia      |
| Hassanal Bolkiah        | Brunei         |
| Mostafa Madbouly        | Egypt          |
| Narendra Modi           | India          |
| Christopher Luxon       | New Zealand    |
| Harald V                | Norway         |
| Jonas Gahr Støre        | Norway         |
| Haitham bin Tarik       | Oman           |
| Shehbaz Sharif          | Pakistan       |
| Luís Montenegro         | Portugal       |
|-------------------------|----------------|
Объединение данных в SQL

UNION ALL для лидеров

SELECT monarch AS leader, country
FROM monarchs
UNION ALL
SELECT prime_minister, country
FROM prime_ministers
ORDER BY leader, country
LIMIT 10;
Объединение данных в SQL

Результат UNION ALL

| leader                  | country        |
|-------------------------|----------------|
| Anthony Albanese        | Australia      |
| Hassanal Bolkiah        | Brunei         |
| Hassanal Bolkiah        | Brunei         |
| Mostafa Madbouly        | Egypt          |
| Narendra Modi           | India          |
| Christopher Luxon       | New Zealand    |
| Harald V                | Norway         |
| Jonas Gahr Støre        | Norway         |
| Haitham bin Tarik       | Oman           |
| Haitham bin Tarik       | Oman           |
Объединение данных в SQL

Давайте потренируемся!

Объединение данных в SQL

Preparing Video For Download...