UNION ja UNION ALL ovat kaksi tärkeintä SQL-operaattoria, joita tietokannassa käytetään useiden taulukoiden tulosjoukon yhdistämiseen. Näiden operaattorien avulla voimme käyttää useita SELECT-kyselyitä, hakea halutut tulokset ja yhdistää ne sitten lopulliseksi tuotokseksi . Tässä artikkelissa aiomme nähdä, kuinka ne eroavat toisistaan. Ennen vertailun tekemistä keskustelemme lyhyesti näistä operaattoreista.
Mikä on unionin toimija?
Union-operaattori MySQL:ssä antaa meille mahdollisuuden yhdistää kaksi tai useampia tuloksia useista SELECT-kyselyistä yhdeksi tulosjoukoksi. Siinä on oletusominaisuus poista päällekkäiset rivit pöydistä. Tämä operaattorisyntaksi käyttää aina sarakkeen nimeä ensimmäisessä SELECT-käskyssä tulosteen sarakkeiden niminä.
MySQL Unionin on noudatettava näitä perussääntöjä:
- Sarakkeiden lukumäärän ja järjestyksen tulee olla sama kaikissa kyselyissä.
- Jokaisen valintakyselyn vastaavilla sarakkeiden sijainnilla on oltava yhteensopiva tietotyyppi.
- Eri SELECT-kyselyissä valitun sarakkeen nimen on oltava samassa järjestyksessä.
- Ensimmäisen SELECT-kyselyn sarakkeen nimi on tulosteen sarakkeen nimi.
HUOMAA: Meidän on tiedettävä, että Unioni ja Join ovat erilaisia.
- JOIN yhdistää tiedot useista eri taulukoista, kun taas UNION yhdistää tiedot useista samankaltaisista taulukoista.
- JOIN liittää tulosteen vaakasuunnassa, kun taas UNION yhdistää tulosjoukon pystysuunnassa.
Alla oleva visuaalinen esitys selittää sen selkeämmin:
Lue lisää Union-operaattorista napsauttamalla tätä.
Mikä on Union All?
UNION ALL -operaattori yhdistää kaksi tai useampia tuloksia useista SELECT-kyselyistä ja palauttaa kaikki tietueet yhdeksi tulosjoukoksi. Se ei poista päällekkäisiä rivejä SELECT-käskyjen lähdöstä.
Voimme ymmärtää sen seuraavan visuaalisen esityksen avulla.
Union vs. Union All -operaattori
Seuraava vertailutaulukko selittää niiden tärkeimmät erot nopeasti:
LIITTO | UNIONI KAIKKI |
---|---|
Se yhdistää tulosjoukon useista taulukoista ja palauttaa erilliset tietueet yhdeksi tulossarjaksi. | Se yhdistää tulosjoukon useista taulukoista ja palauttaa kaikki tietueet yhdeksi tulossarjaksi. |
Seuraavassa on perusasia syntaksi UNION-operaattori: VALITSE sarakkeen_luettelo FROM taulukosta1 LIITTO SELECT sarakeluettelo FROM table2; | Seuraavassa on perusasia syntaksi UNION ALL -operaattorista: VALITSE sarakkeen_luettelo FROM taulukosta1 UNIONI KAIKKI SELECT sarakeluettelo FROM table2; |
Siinä on oletusominaisuus, joka poistaa päällekkäiset rivit tulosteesta. | Siinä ei ole toimintoa, joka poistaisi päällekkäisiä rivejä lähdöstä. |
Sen suorituskyky on hidasta koska päällekkäisten tietueiden löytäminen ja poistaminen vie aikaa. | Sen suorituskyky on nopea koska se ei poista päällekkäisiä rivejä. |
Useimmat tietokannan käyttäjät haluavat käyttää tätä operaattoria. | Useimmat tietokannan käyttäjät eivät halua käyttää tätä operaattoria. |
Unioni ja Union All Esimerkki
Ymmärrämme erot Unionin ja Union All -operaattoreiden välillä esimerkin avulla. Oletetaan, että meillä on taulukko nimeltä Opiskelija ' ja ' Opiskelija 2 ', joka sisältää seuraavat tiedot:
Taulukko: Opiskelija
Taulukko: Opiskelija2
Seuraava SQL-käsky palauttaa kaupunkien erillinen nimi molemmista taulukoista UNION-kyselyllä:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Yllä olevan lauseen suorittamisen jälkeen saamme alla olevan tulosteen, koska Union-operaattori palauttaa vain erilliset arvot.
Seuraava SQL-lause palauttaa kaikkien kaupunkien nimet, mukaan lukien kaksoiskappaleet molemmista taulukoista UNION ALL -kyselyllä:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Yllä olevan käskyn suorittamisen jälkeen saamme alla olevan tulosteen, koska Union All -operaattori palauttaa kokonaisia tietueita poistamatta erillisiä arvoja.