UNION a UNION ALL jsou dva nejdůležitější operátory SQL používané v databázi pro kombinování sady výsledků z více tabulek. Tyto operátory nám umožňují použít více dotazů SELECT, získat požadované výsledky a poté je spojit do konečného výstupu . V tomto článku se podíváme, jak se od sebe liší. Než provedeme srovnání, budeme stručně diskutovat o těchto operátorech.
nat vs postel
Co je operátor Unie?
Operátor Union v MySQL nám umožňuje kombinovat dva nebo více výsledků z více dotazů SELECT do jediné sady výsledků. Má výchozí funkci odstranit duplicitní řádky ze stolů. Tato syntaxe operátoru vždy používá název sloupce v prvním příkazu SELECT jako názvy sloupců výstupu.
MySQL Unie musí dodržovat tato základní pravidla:
- Počet a pořadí sloupců by měly být ve všech dotazech stejné.
- Odpovídající pozice sloupců každého výběrového dotazu musí mít kompatibilní datový typ.
- Název sloupce vybraný v různých dotazech SELECT musí být ve stejném pořadí.
- Název sloupce prvního dotazu SELECT budou názvy sloupců výstupu.
POZNÁMKA: Musíme vědět, že Union a Join jsou odlišné.
- JOIN kombinuje data z více různých tabulek, zatímco UNION kombinuje data z více podobných tabulek.
- JOIN připojí výstup horizontálně, zatímco UNION zkombinuje sadu výsledků vertikálně.
Níže uvedená vizuální reprezentace to vysvětluje jasněji:
Pro více informací o operátorovi Union klikněte zde .
Co je Union All?
Operátor UNION ALL kombinuje dva nebo více výsledků z více dotazů SELECT a vrací všechny záznamy do jediné sady výsledků. Neodstraní duplicitní řádky z výstupu příkazů SELECT.
Můžeme to pochopit pomocí následující vizuální reprezentace.
Union vs. Union All Operator
Následující srovnávací tabulka rychle vysvětluje jejich hlavní rozdíly:
SVAZ | UNION VŠECHNY |
---|---|
Kombinuje sadu výsledků z více tabulek a vrací odlišné záznamy do jediné sady výsledků. | Kombinuje sadu výsledků z více tabulek a vrátí všechny záznamy do jediné sady výsledků. |
Následuje základní syntax operátora UNION: SELECT seznam_sloupců FROM tabulka1 SVAZ SELECT seznam_sloupců FROM tabulka2; | Následuje základní syntax operátora UNION ALL: SELECT seznam_sloupců FROM tabulka1 UNION VŠECHNY SELECT seznam_sloupců FROM tabulka2; |
Má výchozí funkci pro odstranění duplicitních řádků z výstupu. | Nemá žádnou funkci k odstranění duplicitních řádků z výstupu. |
Své výkon je pomalý protože nalezení a odstranění duplicitních záznamů nějakou dobu trvá. | Své výkon je rychlý protože nevylučuje duplicitní řádky. |
Většina uživatelů databáze dává přednost použití tohoto operátoru. | Většina uživatelů databáze tento operátor nepoužívá. |
Union a Union All Příklad
Pojďme pochopit rozdíly mezi operátory Union a Union All na příkladu. Předpokládejme, že máme tabulku s názvem ' Student ' a ' Student2 “, který obsahuje následující údaje:
Tabulka: Student
Tabulka: Student2
Následující příkaz SQL vrátí jednoznačné názvy měst z obou tabulek pomocí dotazu UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Po provedení výše uvedeného příkazu získáme níže uvedený výstup, protože operátor Union vrací pouze odlišné hodnoty.
Vrátí se následující příkaz SQL názvy všech měst včetně duplikátů z obou tabulek pomocí dotazu UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Po provedení výše uvedeného příkazu získáme níže uvedený výstup, protože operátor Union All vrací celé záznamy bez eliminace odlišných hodnot.