Teoria zbiorów w SQL JOIN

Łączenie danych w SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Diagramy Venna i teoria zbiorów

Rysunek przedstawiający trzy diagramy Venna: UNION, INTERSECT i EXCEPT. W UNION oba koła są w całości zaznaczone na zielono. W INTERSECT zaznaczona jest tylko część wspólna. W EXCEPT zaznaczona jest tylko część lewego koła nienakładająca się z prawym.

Łączenie danych w SQL

Diagramy Venna i teoria zbiorów

Obraz przedstawiający trzy diagramy Venna, z których dwa są wyszarzone. Widoczny jest tylko diagram UNION – dwa nakładające się koła w całości zaznaczone na zielono.

Łączenie danych w SQL

Diagram UNION

  • UNION przyjmuje dwie tabele i zwraca wszystkie rekordy z obu tabel

Diagram przedstawiający dwie tabele: lewą i prawą. Po prawej pokazano wynik operacji UNION.

Łączenie danych w SQL

Diagram UNION ALL

  • UNION ALL przyjmuje dwie tabele i zwraca wszystkie rekordy z obu tabel, łącznie z duplikatami

Diagram przedstawiający dwie tabele: lewą i prawą. Po prawej pokazano wynik operacji UNION ALL.

Łączenie danych w SQL

Składnia UNION i UNION ALL

Składnia UNION

SELECT *
FROM left_table
UNION
SELECT *
FROM right_table;

Składnia UNION ALL

SELECT *
FROM left_table
UNION ALL
SELECT *
FROM right_table;
Łączenie danych w SQL

Składnia UNION i UNION ALL

Diagram przedstawiający dwie tabele: lewą i prawą. Po prawej stronie pokazano wynik operacji UNION. Strzałki wskazują, że obie tabele muszą mieć tę samą liczbę kolumn tego samego typu.

Łączenie danych w SQL

Składnia UNION i UNION ALL

Diagram przedstawiający dwie tabele: lewą i prawą. Po prawej pokazano wynik operacji UNION z zaznaczeniem, że nazwa pola pochodzi z lewej tabeli, nawet jeśli użyto aliasu.

Łączenie danych w SQL

Tabela monarchs

SELECT *
FROM monarchs;
| country        | continent   | monarch                 |
|----------------|-------------|-------------------------|
| Brunei         | Asia        | Hassanal Bolkiah        |
| Oman           | Asia        | Haitham bin Tarik       |
| Norway         | Europe      | Harald V                |
| United Kingdom | Europe      | Charles III             |
Łączenie danych w SQL

Premierzy i monarchowie

SELECT monarch AS leader, country
FROM monarchs
UNION
SELECT prime_minister, country
FROM prime_ministers
ORDER BY country, leader
LIMIT 10;
Łączenie danych w SQL

Wynik 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       |
|-------------------------|----------------|
Łączenie danych w SQL

UNION ALL na danych o liderach

SELECT monarch AS leader, country
FROM monarchs
UNION ALL
SELECT prime_minister, country
FROM prime_ministers
ORDER BY leader, country
LIMIT 10;
Łączenie danych w SQL

Wynik 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           |
Łączenie danych w SQL

Czas na ćwiczenia!

Łączenie danych w SQL

Preparing Video For Download...