Általában egy lekérdezésben nem minden rekord adataira vagyunk kíváncsiak. Nem is célszerű minden rekord adatát lekérdezni a kliens oldalon, mivel az eredmény rekordszetet átadja a szerver a kliensnek és ez esetenként rengeteg adat utaztatását jelentené, ami leterheli a hálózatot és a szervert. Az eredményhalmaz szűkítéséhez tudjuk használni a WHERE feltételt
WHERE
A szelekció művelet megvalósítása esetén a SELECT utasítást egy feltétellel egészítjük ki:
SELECT mezőnév, mezőnév, ... FROM táblanév
WHERE feltétel;
Például a 11.b osztálynak az összes adatára vagyunk kíváncsiak:
SELECT * FROM Diakok WHERE osztaly = '11.b';
Megadott attribútumok esetén a projekció és a szelekció művelete összevonható egy utasítással:
Összehasonlító operátorok
Operátor | Értelmezés |
---|---|
= | Egyenlő |
<> | nem egyenlő |
> | Nagyobb |
= | nagyobb egyenlő |
< | kisebb |
<= | kisebb egyenső |
IS NULL | egy mező ben van-e érték, azaz ki van-e töltve |
- Az összehasonlító operátorok segítségével attributumokat és konstansokat hasonlíthatunk össze.
- A szöveg és dátum konstansokat idézőjelek között kell megadni. Az alapértelmezés szerinti dátum formátum nap-hónap-év. A hónap a hónap nevének három betűs angol rövidítése, az év pedig évezred és évszázad nélkül értendő
Az SQL tartalmaz olyan összehasonlító operátorokat is, melyek nem egy adott értékkel, hanem az értékek egy halmazával történő összehasonlítást eredményeznek.
Összehasonlító operátorok halmazokra
Operátor | Értelmezés |
BETWEEN x AND y | adott értékek közé esik |
IN (a, b, c, ...) | az értékek valamelyike |
LIKE minta | hasonlít a mintára |
Az IN esetén egy halmazt adhatunk az elemek felsorolásával.
A LIKE operátort karakteres mezők összehasonlítá-sára alkalmazhatjuk. Két speciális karakter adható meg a mintában, a % jel tetszőleges hosszúságú karakter sorozatot helyettesít, az _ aláhúzás karakter pedig egy tetszőleges karaktert.
Szöveges minta megadása - LIKE - példák
Operátor | Értelmezés |
LIKE 'a%' | minden 'a' betűvel kezdődő |
LIKE 'x_' | minden 'x'-el kezdődő kétbetűs |
LIKE '%a%' | minden 'a' betűt tartalmazó |
LIKE '_a%x' | második betű 'a' és 'x'-re végződő |
Több keresési feltételt is összekapcsolhatunk a logikai operátorokkal, illetve segítségükkel a halmaz műveleteket valósíthatjuk meg.
Logikai operátorok
Operátor | Értelmezés |
NOT | Logikai tagadás |
AND | Logikai és |
OR | Logikai vagy |
A végrehajtás, kiértékelés sorrendje
A különböző logikai operátorok végrehajtásának sorrendje (precedencia) csökkenő sorrendben:
=, <>, >, >=, <, <=, NOT, AND, OR
Megjegyés:
- Ha egy feltétel nem azt az eredményt adja, amelyet szeretnénk, akkor valószínűleg a kiértékelés sorrendjében tévedtünk. Ilyenkor használjuk a zárójeleket, mert a zárójelezéssel felülÍrjuk a precedenciát!
- Összetett feltételeknél célszerű a különvböző feltételeket új sorokba írni és a sorok végére tenni az ANd és Or feltételeket, mert úgy átláthatóbb és jobban értelmezhető!
SELECT *
FROM tanulók
WHERE
osztaly = "11.A" AND
lakcim LIKE "Budap%";
Általában is igaz, hogy mivel az SQL utasításokat tetszőleges számú sorba írhatjuk, ezért a programozó számára az áttekinthetőséget úgy tudjuk biztosítani, ha a szövegünk struktúrált és az utasítás végére ';' jelet teszünk.