UNION in UNION ALL sta dva najpomembnejša operatorja SQL, ki se uporabljata v bazi podatkov za združevanje nabora rezultatov iz več tabel. Ti operatorji nam omogočajo, da uporabimo več poizvedb SELECT, pridobimo želene rezultate in jih nato združimo v končni rezultat . V tem članku bomo videli, kako se med seboj razlikujejo. Pred primerjavo se bomo na kratko pogovorili o teh operaterjih.
Kaj je operater Unije?
Operator Union v MySQL nam omogoča združitev dveh ali več rezultatov iz več poizvedb SELECT v en niz rezultatov. Ima privzeto funkcijo za odstranite podvojene vrstice iz tabel. Ta sintaksa operatorja vedno uporablja ime stolpca v prvem stavku SELECT kot imena stolpcev izhoda.
MySQL Zveza mora upoštevati ta osnovna pravila:
- Število in vrstni red stolpcev morata biti enaka v vseh poizvedbah.
- Ustrezen položaj stolpcev vsake izbirne poizvedbe mora imeti združljiv podatkovni tip.
- Ime stolpca, izbrano v različnih poizvedbah SELECT, mora biti v istem vrstnem redu.
- Ime stolpca prve poizvedbe SELECT bo ime stolpca izhoda.
OPOMBA: Vedeti moramo, da se Union in Join razlikujeta.
- JOIN združuje podatke iz več različnih tabel, medtem ko UNION združuje podatke iz več podobnih tabel.
- JOIN doda izhod vodoravno, medtem ko UNION združi nabor rezultatov navpično.
Spodnja vizualna predstavitev to bolj jasno pojasni:
Če želite prebrati več informacij o operaterju Union, kliknite tukaj.
Kaj je Union All?
Operator UNION ALL združi dva ali več rezultatov iz več poizvedb SELECT in vrne vse zapise v en sam niz rezultatov. Ne odstrani podvojenih vrstic iz izhoda stavkov SELECT.
To lahko razumemo z naslednjo vizualno predstavitvijo.
Union proti Union All Operator
Naslednja primerjalna tabela na hiter način razloži njihove glavne razlike:
UNION | UNIJA VSE |
---|---|
Združuje nabor rezultatov iz več tabel in vrne različne zapise v en sam niz rezultatov. | Združuje niz rezultatov iz več tabel in vrne vse zapise v en sam niz rezultatov. |
Sledi osnovno sintaksa operaterja UNION: IZBERI seznam_stolpcev IZ tabele1 UNION SELECT column_list FROM table2; | Sledi osnovno sintaksa operaterja UNION ALL: IZBERI seznam_stolpcev IZ tabele1 UNIJA VSE SELECT column_list FROM table2; |
Ima privzeto funkcijo za odstranjevanje podvojenih vrstic iz izpisa. | Nima funkcije za odstranjevanje podvojenih vrstic iz izpisa. |
Njegovo delovanje je počasno ker je za iskanje in nato odstranitev podvojenih zapisov potreben čas. | Njegovo delovanje je hitro ker ne odstrani podvojenih vrstic. |
Večina uporabnikov baze podatkov raje uporablja ta operater. | Večina uporabnikov baze podatkov ne želi uporabljati tega operaterja. |
Union in Union All Primer
Razumejmo razlike med operaterji Union in Union All na primeru. Recimo, da imamo tabelo z imenom ' Študent ' in ' študent2 ', ki vsebuje naslednje podatke:
Tabela: Študent
Tabela: Študent2
Naslednji stavek SQL vrne razločno ime mest iz obeh tabel z uporabo poizvedbe UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Po izvedbi zgornjega stavka bomo dobili spodnji rezultat, ker operater Union vrne samo različne vrednosti.
Naslednji stavek SQL se vrne vsa imena mest, vključno z dvojniki iz obeh tabel z uporabo poizvedbe UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Po izvedbi zgornjega stavka bomo dobili spodnji rezultat, ker operator Union All vrne celotne zapise, ne da bi odstranil različne vrednosti.