SQL

SQL:n joukko-operaattorit: IN, BETWEEN ja UNION

SQL-lauseiden operaattorit mahdollistavat tietojen vertailun, yhdistämisen ja muokkaamisen osana kyselyä. Ne määrittävät, millä ehdoilla ja logiikalla tietoa käsitellään — tämän takia ne ovat olennainen SQL-kielen toimintaa. Operaattorit jaetaan perinteisesti kuuteen pääryhmään: aritmeettiset, vertailu-, merkki-, loogiset, joukko- ja muut operaattorit.

Joukko-operaattorit

SQL:n joukko-operaattorit yhdistävät usean eri SQL-kyselyn tulokset ja kohdentavat kyselyt arvojoukkoon (yksittäisten arvojen asemasta). Kaikki joukko-operaattorit vaativat, että kyselyt palauttavat saman määrän sarakkeita ja että sarakkeet ovat samaa tietotyyppiä.

IN-operaattori

IN-operaattori vertailee sarakkeen arvoa useaan vaihtoehtoon ilman pitkää OR-ketjua. Se tekee kyselystä helpommin luettavan ja ylläpidettävän:


SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Malli IN ('LADA','SKODA', 'VOLVO' );

Vastaava kysely olisi OR-operaattorin kautta toteutettuna näyttää seuraavalta:


SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Malli = 'LADA' OR Malli = 'SKODA' OR Malli = 'VOLVO';


BETWEEN-operaattori

BETWEEN-operaattorilla tarkistetaan sijoittuuko arvo määritellyn välin rajojen sisään. Se soveltuu erityisesti lukuarvojen tai päivämäärien vertailuun:


SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Hinta BETWEEN 10000 AND 50000;


UNION – yhdistä ilman kaksoiskappaleita

UNION palauttaa kahden kyselyn tulokset ja poistaa kaksoisarvot (eli saman rivin esiintymät). Seuraava kysely palauttaa kaikki eri automerkit molemmista tauluista:


SELECT Merkki FROM Autot
UNION 
SELECT Merkki FROM Menopelit;

UNION ALL – yhdistä säilyttäen kaksoiskappaleet

UNION ALL toimii kuten UNION, mutta säilyttää kaikki rivit, myös kaksoisarvot. Seuraava kysely voi siis palauttaa saman merkin useita kertoja:


SELECT Merkki FROM Autot
UNION ALL 
SELECT Merkki FROM Menopelit;

INTERSECT – leikkaus

INTERSECT eli leikkaus palauttaa vain rivit, jotka esiintyvät molempien kyselyiden tulosjoukoissa:


SELECT Merkki FROM Autot
INTERSECT 
SELECT Merkki FROM Menopelit;

MINUS - erotus

MINUS eli erotus palauttaa ensimmäisen kyselyn rivit, jotka eivät ole mukana toisessa kyselyssä.


SELECT Merkki FROM Autot
MINUS 
SELECT Merkki FROM Menopelit;