SQL

Loogiset operaattorit AND, OR ja NOT: useiden ehtojen hyödyntäminen SQL-kyselyissä

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.

Loogiset operaattorit

Loogiset operaattorit yhdistävät useita ehtoja SQL-kyselyissä. Ne mahdollistavat monipuolisempien hakulauseiden muodostamisen, kun halutaan huomioida useampia kriteerejä.

Molempien ehtojen on toteuduttava: AND-operaattori

AND-operaattori vaatii, että kaikki liittyvät ehtolausekkeet ovat tosia, jotta koko ehtolauseke olisi tosi. Seuraavassa esimerkissä kysellään autoja, joiden malli sisältää merkkijonon "AD" ja hinta ylittää 10 000 euroa.


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Malli LIKE '%AD%'
AND
Hinta > 10000;


Riittää että yksi ehto toteutuu: OR-operaattori

Or-operaattorilla riittää, että yksi liitetyistä ehdoista on tosi, jotta koko ehtolausekkeestä tulee tosi. Seuraavassa esimerkissä palautetaan listaus autoista, joiden mallin nimessä esiintyy "AD" tai hinta ylittää 10 000 euroa. Siispä:


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE Malli LIKE '%AD%'
OR
Hinta > 10000;


Vertailuehdon negaatio: NOT-operaattori

NOT-operaattori kääntää vertailuehdon totuusarvon. Seuraava esimerkkikysely palauttaa kaikki autot, joiden mallinimessä ei esiinny merkkijonoa "AD".


SELECT Merkki, Malli, Hinta
FROM Autot
WHERE Malli NOT LIKE '%AD%'  ;


Ehtojen ryhmittely sulkeilla

Kun kysely sisältää useita loogisia operaattoreita, niiden suoritusjärjestystä ohjataan sulkeiden käytöllä. Käytä sulkeita varmistaaksesi, että ehtosi evaluoidaan halutussa järjestyksessä. Ilman sulkeita SQL tulkitsee ehdot oletusjärjestyksessä (NOT → AND → OR), mikä voi johtaa yllättäviin tuloksiin.


SELECT Merkki, Malli, Hinta 
FROM Autot
WHERE (Malli LIKE '%AD%' OR Malli LIKE '%FO%')
AND Hinta < 20000;


Yllä oleva esimerkkikysely tekee listauksen autoista, joiden mallinimessä on "AD" tai "FO" ja hinta on alle 20 000 euroa. Ilman sulkeita ehtojen yhdistelmä voisi palauttaa vääränlaisen tuloksen.