mysql union comprehensive tutorial with union examples
Tento výukový program vysvětluje příkaz MySQL UNION, jeho typy, Union vs Union All a příklady kombinování dat ze 2 nebo více dotazů:
MySQL UNION se používá ke kombinaci výsledků z více dotazů SELECT do jedné sady výsledků. Je také možné mít všechny složité dotazy / operace v dotazech SELECT a provádět UNION s dalšími příkazy SELECT, abyste získali kombinovaný výsledek.
jednoduchý třídicí algoritmus c ++
Výchozí charakteristikou příkazu UNION by bylo odebrání duplicitních položek nebo řádků z výsledné sady řádků, nicméně poskytuje způsoby, jak také načíst duplicitní záznamy pomocí klauzule UNION ALL.
Co se naučíte:
- Pochopení UNIE prostřednictvím teorie množin
- Jaký problém řeší MySQL UNION
- MySQL UNION Vs UNION ALL
- Závěr
Pochopení UNIE prostřednictvím teorie množin
Provoz UNION lze velmi dobře pochopit z principů teorie SET.
Předpokládejme, že máme tabulky A & B reprezentované níže uvedenými sadami a mají některá překrývající se data (nebo mohou také zcela nesouviset) - UNION bude obsahovat kombinaci dat z obou tabulek.
Podívejme se na příklad, kde množiny A a B mají některé společné prvky. UNION bude obsahovat všechny hodnoty ze sady A & B s vynecháním duplicitních hodnot.
Co když jsou sady A a B disjunktní a neobsahují žádné společné prvky? I zde UNIE vrátí stejný výsledek.
Pojďme diskutovat o scénáři, kdy se mezi sadami překrývají prvky a chceme, aby se ve výsledkové sadě objevily i duplicitní hodnoty.
MySQL poskytuje způsob, jak toho dosáhnout pomocí možnosti UNION ALL, jak je znázorněno na následujícím obrázku.
Jaký problém řeší MySQL UNION
MySQL UNION se používá, pokud máte podobná data ve 2 nebo více tabulkách a chcete zobrazit kombinovaný pohled na data obsažená v obou tabulkách namísto spouštění příkazů SELECT pro jednotlivé tabulky.
Například - Předpokládejme, že jsou 2 tabulky - Zaměstnanec a Student. A pracujete na databázi osob, která chce mít pouze jméno, věk a datum narození pro všechny zaměstnance a studenty.
Bez UNION budete muset provést samostatné dotazy SELECT pro obě tabulky a poté provést požadovaný výpočet se získanou sadou výsledků.
Syntaxe UNIE MySQL
Níže uvedené dotazy vrátí UNION 2 nebo více než 2 příkazy SELECT.
SELECT {column1}, {column2} FROM {table1} UNION (ALL | DISTINCT) SELECT {column3}, {column4} FROM {table2} UNION (ALL | DISTINCT) SELECT ...
Zkusme si prohlédnout různé komponenty syntaxe
- Vidíme, že je možné kombinovat více SELECT dotazů s UNION, abychom získali výslednou sadu řádků.
- Název sloupce a datové typy: Je důležité si uvědomit, že sloupce, které chceme kombinovat, by měly mít stejný nebo kompatibilní datový typ. Například: pokud máte column1 jako STRING, pak column3 by měl být také STRING (nebo kompatibilní s STRING).
- Názvy a pozice sloupců jsou určeny z prvního příkazu SELECT v dotazu UNION. Například ve výše uvedené syntaxi: column1 and column2 are named as header columns in the result set and the values of column3 and column4 are mapped to column1 and column2, resp.
- Výsledky dotazu UNION ve výchozím nastavení odstraní duplicitní položky. Například, v tomto případě, pokud existuje duplicitní položka, která má přesnou shodu a má stejné hodnoty pro sloupec1 a sloupec2, budou tyto řádky z množiny výsledků vynechány.
Pokud jsou požadovány duplikáty, můžeme spolu s UNION použít možnost „VŠE“.
Využití ODLIŠNÝ implicitně implikováno. Vezměte prosím na vědomí, že může být výslovně specifikováno také pro lepší čitelnost.
Podívejme se na ukázkový příklad dotazu UNION.
Předpokládejme, že existují 2 tabulky - zaměstnanec a student - každá s osobními údaji.
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Nyní zadejte do obou těchto tabulek fiktivní data, jak je znázorněno níže:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
Jak vidíte výše, záměrně jsme přidali řádek, který má stejné atributy pro jméno, věk a datum narození.
Podívejme se nyní, jak můžeme kombinovat data v těchto 2 tabulkách pomocí příkazů UNION. Z obou tabulek budeme dotazovat uživatelské jméno a věk.
Jednoduchá UNIE
Dotaz:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
Ve výsledku uvidíte 9 záznamů (což znamená, že výše uvedený dotaz vynechal duplicitní záznam).
Výstup:
název | stáří |
---|---|
Iane | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | dvacet |
Akash | 22 |
Shirley | 19 |
Joana | dvacet jedna |
UNIE S UNION ALL
Použití klauzule UNION s ALL zajistí, že se zobrazí i duplicitní položky.
Dotaz:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Výstup:
název | stáří |
---|---|
Iane | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | dvacet |
Akash | 22 |
Shirley | 19 |
Joana | dvacet jedna |
Kartik | dvacet |
UNIE S Podmínkou
Pojďme přidat podmínky do příkazů SELECT, kde chceme mít údaje o zaměstnancích ve věku do 30 let a studentů ve věku do 25 let.
Dotaz:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Výstup:
název | stáří |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | dvacet |
Akash | 22 |
Shirley | 19 |
Joana | dvacet jedna |
Jak vidíte výše, sada výsledků zahrnuje kombinovaný výsledek s ověřenými individuálními podmínkami SELECT.
Objednávání výsledků UNION
Výsledky dotazu UNION jsou ve výchozím nastavení neuspořádané.
Aby bylo možné uložit řazení podle sloupce existujícího ve výsledné sadě, lze na konci příkazu UNION zadat klauzuli ORDER BY.
Pojďme použít stejná data zaměstnance / studenta a objednat výsledky UNION ve vzestupném pořadí podle věku.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Výstup:
název | stáří |
---|---|
Shirley | 19 |
Kartik | dvacet |
Joana | dvacet jedna |
Akash | 22 |
Iane | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Výše uvedená sada výsledků je řazena podle věkových hodnot v rostoucím pořadí. Můžeme také použít aliasy sloupců k odkazu na sloupce v klauzuli ORDER BY.
Například: - Dotaz jako níže také přinese stejný výsledek.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Existuje další způsob, jak použít klauzuli ORDER BY pouhým uvedením polohy sloupce namísto názvu sloupce.
Například: Ve výše uvedeném dotazu UNION vybíráme jméno a věk, což znamená, že tyto sloupce jsou na pozicích 1 a 2.
Takže pro OBJEDNÁVÁNÍ VĚKU můžeme jednoduše zadat pozici namísto skutečného názvu sloupce.
Níže uvedený dotaz tedy přinese stejný výsledek.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION Vs UNION ALL
MySQL poskytuje 2 varianty UNION, tj. ODBORNÁ UNIE a UNION ALL
Vezměte prosím na vědomí, že DISTINCT je implicitně implicitní, i když není uveden.
Hlavní rozdíl mezi oběma je UNION ALL umožňuje kombinovat a vracet také duplicitní řádky, zatímco UNION právě vrací kombinované řádky a odstraňuje duplikáty.
Níže uvedená tabulka vysvětluje podrobnosti:
Parametr | UNIE | UNION ALL |
---|---|---|
Definice | Je ekvivalentní UNION DISTINCT - při vrácení výsledku ignoruje duplicitní řádky dat | Vrátí všechny řádky včetně duplikátů |
Syntax | VYBRAT {columnList} Z {tabulky1} UNIE VYBRAT {columnList} Z {tabulky2} | VYBRAT {columnList} Z {tabulky1} UNION ALL VYBRAT {columnList} Z {tabulky2} |
Požadavky na údaje | Kombinovaná data by měla mít podobné datové typy a při načítání z více tabulek by se měla načítat ve stejném pořadí | Stejné jako UNION |
Často kladené otázky
Otázka č. 1) Je unie rychlejší než JOIN?
Odpovědět: UNION a JOIN se používají prakticky pro 2 různé účely.
Technicky vzato, UNION je mnohem rychlejší než JOIN (zejména pro velké datové sady), protože UNION pouze zřetězuje řádky dat z jednotlivých příkazů SELECT.
Otázka 2) Co je operátor UNION ALL?
Odpovědět: Podobně jako UNION, operátor UNION ALL také vrátí UNION mezi 2 dotazy SELECT, ale rozdíl je v tom, že obsahuje také duplicitní řádky / položky.
Otázka č. 3) Jaký je rozdíl mezi UNION a JOIN?
Odpovědět: UNION i JOIN se používají ke kombinování dat ze 2 nebo více tabulek. Existuje však obrovský rozdíl, pokud jde o získanou sadu výsledků a způsob načítání dat.
Podobnosti a rozdíly mezi JOIN a UNION jsou uvedeny v následující tabulce:
UNIE | PŘIPOJIT SE |
---|---|
Kombinuje data z více tabulek | Kombinuje data z více tabulek |
Pro shromažďování nebo kombinování dat nevyžaduje žádné konkrétní podmínky | JOIN funguje na podmínce JOIN, která je vyžadována k ověření dat přicházejících do sady výsledků |
Data z různých tabulek se berou jako různé řádky sady výsledků | Data z různých tabulek jsou kombinována do jednoho řádku - například řádek ve výsledkové sadě může obsahovat 2 sloupce z tabulky1, 3 sloupce z tabulky 2 atd. V závislosti na podmínce JOIN a dotazu SELECT |
UNIE jsou jednoduché a přímé | JOINS vyžadují složité podmínky a v závislosti na potřebách lze použít více typů spojení jako INNER / OUTER atd. |
Závěr
V tomto tutoriálu jsme se naučili používat MySQL UNION ke kombinování dat ze 2 nebo více příkazů SELECT.
Příkaz UNION je opravdu užitečný pro shromažďování podobných dat z velkých sad různých tabulek a následné spuštění analýzy kombinovaných dat.
Příkaz UNION také podporuje klauzuli ALL, která umožňuje také načítání duplicitních záznamů.
Doporučené čtení
- Co je MySQL a proč se používá?
- Rozdíl mezi SQL Vs MySQL Vs SQL Server (s příklady)
- Vnitřní spojení Vs vnější spojení: Přesný rozdíl s příklady
- Výukový program MySQL JOIN: Vnitřní, Vnější, Křížový, Levý, Pravý a Vlastní
- MySQL Create View Tutorial s příklady kódu
- MySQL Vytvoření výukové tabulky s příklady
- Výukový program pro prohlášení o aktualizaci MySQL - aktualizace syntaxe dotazů a příklady
- Top 40 nejlepších otázek a odpovědí na rozhovor s MySQL (2021 otázek)