mysql union comprehensive tutorial with union examples
Ta vadnica razlaga ukaz MySQL UNION, njegove vrste, Union vs Union All in primere za združevanje podatkov iz 2 ali več poizvedb:
MySQL UNION se uporablja za kombiniranje rezultatov iz več poizvedb SELECT v en nabor rezultatov. V poizvedbah SELECT je mogoče imeti tudi vse zapletene poizvedbe / operacije in izvesti UNION z drugimi stavki SELECT, da dobite kombiniran rezultat.
s čim odpreti datoteke xml
Privzeta značilnost stavka UNION bi bila odstranitev podvojenih vnosov ali vrstic iz nastalega niza vrstic, vendar ponuja načine za pridobivanje podvojenih zapisov tudi s pomočjo stavka UNION ALL.
Kaj se boste naučili:
- Razumevanje UNIJE s teorijo nizov
- Katero težavo rešuje MySQL UNION
- MySQL UNION VS UNION ALL
- Zaključek
Razumevanje UNIJE s teorijo nizov
Delovanje UNION bi bilo mogoče zelo dobro razumeti iz načel teorije SET.
Recimo, da imamo tabele A in B, kot jih predstavljajo spodnji nizi, in imajo nekatere prekrivajoče se podatke (ali pa so lahko tudi popolnoma nepovezani) - UNION bo vključeval kombinacijo podatkov iz obeh tabel.
Poglejmo primer, kjer imajo sklopi A in B nekaj skupnih elementov. UNION bo vseboval vse vrednosti iz niza A in B, podvojene vrednosti pa bodo izpuščene.
Kaj pa, če sta množici A in B ločeni in ne vsebujeta nobenih skupnih elementov? Tudi tukaj bo UNION vrnil enak rezultat.
Pogovorimo se o scenariju, kjer se elementi med seboj prekrivajo in želimo, da se podvojene vrednosti pojavijo tudi v nizu rezultatov.
MySQL omogoča, da to storite z uporabo možnosti UNION ALL, kot je prikazano na spodnji sliki.
Katero težavo rešuje MySQL UNION
MySQL UNION se uporablja, če imate podobne podatke v 2 ali več tabelah in želite videti kombiniran pogled na podatke v obeh tabelah, namesto da bi za posamezne tabele izvajali stavke SELECT.
Na primer - Recimo, da obstajata 2 tabeli - Zaposleni in Študent. In delate na zbirki podatkov o osebah, ki želi samo imeti ime, starost in datum rojstva za vse zaposlene in študente.
Brez UNION boste morali izvesti ločene poizvedbe SELECT za obe tabeli in nato izvesti želeni izračun s pridobljenim nizom rezultatov.
Sintaksa MySQL UNION
Spodnje poizvedbe bodo vrnile UNION z 2 ali več kot dvema stavkoma SELECT.
SELECT {column1}, {column2} FROM {table1} UNION (ALL | DISTINCT) SELECT {column3}, {column4} FROM {table2} UNION (ALL | DISTINCT) SELECT ...
Poskusimo videti različne sestavine skladnje
- Vidimo lahko, da je mogoče združiti več poizvedb SELECT z UNION, da dobimo nastalo vrstico.
- Ime stolpca in vrste podatkov: Pomembno je razumeti, da morajo imeti stolpci, ki jih želimo združiti, enak ali združljiv podatkovni tip. Na primer: če imate stolpec1 kot STRING, naj bo tudi stolpec3 STRING (ali STRING združljiv).
- Imena in položaji stolpcev se določijo iz prvega stavka SELECT v poizvedbi UNION. Na primer v zgornji sintaksi: stolpec1 in stolpec2 sta poimenovana kot stolpca glave v naboru rezultatov, vrednosti stolpca3 in stolpca4 pa sta preslikani v stolpec1 oziroma stolpec2.
- Rezultati poizvedbe UNION privzeto odstranijo podvojene vnose. Na primer, v tem primeru, če obstaja dvojnik, ki se natančno ujema in ima enake vrednosti za stolpec1 in stolpec2, bodo te vrstice v naboru rezultatov izpuščene.
Če želimo dvojnike, lahko skupaj z UNIJO uporabimo možnost 'VSE'.
Uporaba IZRAZIT privzeto pomeni. Prosimo, upoštevajte, da bi lahko tudi bolj izrecno določili večjo berljivost.
Oglejmo si vzorčni primer poizvedbe UNION.
Recimo, da obstajata 2 tabeli - zaposlena in študentka - vsaka z osebnimi podatki.
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));
Zdaj v obe tabeli vnesite nekaj lažnih podatkov, kot je prikazano spodaj:
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');
Kot lahko vidite zgoraj, smo namerno dodali vrstico z enakimi atributi za ime, starost in datum rojstva.
Poglejmo zdaj, kako lahko združimo podatke v teh dveh tabelah z ukazi UNION. V obeh tabelah bomo povpraševali po uporabniškem imenu in starosti.
Preprosta UNIJA
Poizvedba:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
V rezultatu boste videli 9 zapisov (kar pomeni, da je zgornja poizvedba izpustila podvojen vnos).
Izhod:
ime | starost |
---|---|
Ian | 26. |
Darren | 32 |
Abhishek | 28. |
Amit | 30. |
Steven | 40 |
Kartik | dvajset |
Akaš | 22. |
Shirley | 19. |
Joana | enaindvajset |
UNIJA Z UNIJO VSE
Uporaba stavka UNION z ALL bo zagotovila, da se bodo prikazali tudi podvojeni vnosi.
Poizvedba:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Izhod:
ime | starost |
---|---|
Ian | 26. |
Darren | 32 |
Abhishek | 28. |
Amit | 30. |
Steven | 40 |
Kartik | dvajset |
Akaš | 22. |
Shirley | 19. |
Joana | enaindvajset |
Kartik | dvajset |
UNIJA s pogojem
Dodajte izjave SELECT, kjer želimo podatke o zaposlenih, mlajših od 30 let, in študentov, mlajših od 25 let.
Poizvedba:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Izhod:
ime | starost |
---|---|
Amit | 30. |
Abhishek | 28. |
Kartik | dvajset |
Akaš | 22. |
Shirley | 19. |
Joana | enaindvajset |
Kot lahko vidite zgoraj, nabor rezultatov vključuje kombinirani rezultat s potrjenimi posameznimi pogoji SELECT.
Naročanje rezultatov UNION
Rezultati poizvedbe UNION so privzeto neurejeni.
Če želite uvesti vrstni red po stolpcu, ki obstaja v nastalem naboru, lahko na koncu ukaza UNION določite stavek ORDER BY.
Uporabimo iste podatke o zaposlenih in študentih in razvrstimo rezultate zveze v naraščajočem vrstnem redu po starosti.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Izhod:
ime | starost |
---|---|
Shirley | 19. |
Kartik | dvajset |
Joana | enaindvajset |
Akaš | 22. |
Ian | 26. |
Abhishek | 28. |
Darren | 32 |
Steven | 40 |
Zgornji niz rezultatov je razvrščen po starosti v naraščajočem vrstnem redu. Vzdevke stolpcev lahko uporabimo tudi za sklicevanje na stolpce v stavku ORDER BY.
Na primer: - Poizvedba, kot je spodaj, bo prav tako dala enak rezultat.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Obstaja še en način, kako uporabiti stavek ORDER BY, tako da namesto imena stolpca omenite položaj stolpca.
Na primer: V zgornji poizvedbi UNION izberemo ime in starost, kar pomeni, da sta ta stolpca na položaju 1 in 2.
Torej za NAROČENJE PO starosti lahko preprosto določimo položaj namesto dejanskega imena stolpca.
Zato bo spodnja poizvedba dala enak rezultat.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION VS UNION ALL
MySQL ponuja 2 različici UNION, tj. ZALOGA UNIJE in UNIJA VSE
Upoštevajte, da DISTINCT privzeto pomeni, čeprav ni naveden.
Glavna razlika med obema je UNION ALL, ki omogoča tudi kombiniranje in vrnitev podvojenih vrstic, medtem ko UNION vrne kombinirane vrstice in odstrani dvojnike.
Spodnja tabela pojasnjuje podrobnosti:
Parameter | UNIJA | UNIJA VSE |
---|---|---|
Definicija | Je enakovredno UNION DISTINCT - med vrnitvijo rezultata prezre podvojene vrstice podatkov | Vrne vse vrstice, vključno s dvojniki |
Sintaksa | IZBERI {stolpec} IZ {tabele1} UNIJA IZBERI {stolpec} IZ {tabele2} | IZBERI {stolpec} IZ {tabele1} UNIJA VSE IZBERI {stolpec} IZ {tabele2} |
Zahteve po podatkih | Podatki, ki so združeni, bi morali imeti podobne vrste podatkov in jih je treba pridobiti v enakem vrstnem redu, ko jih pridobimo iz več tabel | Enako kot UNION |
Pogosto zastavljena vprašanja
V # 1) Ali je Union hitrejši od JOIN?
Odgovor: UNION in JOIN se uporabljata za praktično dva različna namena.
Tehnično gledano je UNION precej hitrejši od JOIN (zlasti za velike nabore podatkov), saj UNION samo poveže vrstice podatkov iz posameznih stavkov SELECT.
V # 2) Kaj je operater UNION ALL?
Odgovor: Podobno kot UNION tudi operater UNION ALL vrne UNION med 2 poizvedbama SELECT, vendar je razlika v tem, da vsebuje tudi podvojene vrstice / vnose.
V # 3) Kakšna je razlika med UNION in JOIN?
Odgovor: Tako UNION kot JOIN se uporabljata za združevanje podatkov iz 2 ali več tabel. Obstaja pa velika razlika v smislu pridobljenega niza rezultatov in načina pridobivanja podatkov.
Podobnosti in razlike med JOIN in UNION so navedene v spodnji tabeli:
UNIJA | PRIDRUŽITE SE |
---|---|
Združuje podatke iz več tabel | Združuje podatke iz več tabel |
Za razvrščanje ali kombiniranje podatkov ni potreben noben poseben pogoj | JOIN deluje v pogoju JOIN, ki je potreben za preverjanje podatkov, ki prihajajo v naboru rezultatov |
Podatki iz različnih tabel se jemljejo kot različne vrstice nabora rezultatov | Podatki iz različnih tabel so združeni v eno vrstico - na primer vrstica v naboru rezultatov lahko vsebuje 2 stolpca iz tabele1, 3 stolpce iz tabele 2 itd., Odvisno od pogoja PRIDRUŽITEV in poizvedbe SELECT |
UNIONI so preprosti in enostavni | ZDRUŽITVE zahtevajo zapletene pogoje in glede na potrebe je mogoče uporabiti več vrst spojev, kot sta INNER / OUTER itd. |
Zaključek
V tej vadnici smo se naučili uporabe MySQL UNION za kombiniranje podatkov iz 2 ali več stavkov SELECT.
Izjava UNION je zelo koristna za zbiranje podobnih podatkov iz velikih naborov različnih tabel in nato izvajanje analize združenih podatkov.
Ukaz UNION podpira tudi stavek ALL, ki omogoča tudi pridobivanje podvojenih zapisov.
Priporočeno branje
- Kaj je MySQL in zakaj se uporablja?
- Razlika med SQL Vs MySQL Vs SQL Server (s primeri)
- Inner Join Vs Zuter Join: Natančna razlika s primeri
- Vadnica za MySQL JOIN: Notranja, zunanja, križna, leva, desna in lastna
- Vadnica za ustvarjanje pogleda MySQL s primeri kode
- MySQL Vodič za ustvarjanje tabel s primeri
- Vadnica za izjavo o posodobitvi MySQL - Sintaksa in primeri posodobitve poizvedbe
- 40 najboljših vprašanj in odgovorov za intervju z MySQL (2021 vprašanj)