Lekérdezések szűrése a WHERE kulcsszóval
Amikor adatokat szeretnénk kinyerni egy adatbázisból, sokszor nincs szükségünk az összes rekordra. Előfordulhat például, hogy nem az iskola összes tanulóját keressük, csak azokat, akik egy bizonyos osztályba járnak - vagy éppen keressük azokat a megyeszékhelyeket, amelyek népessége viszonylag kevés.
Ezekben az esetekben használjuk a WHERE kulcsszót arra, hogy szűrőfeltételeket adjunk meg a lekérdezésünkhöz. A WHERE kulcsszó minden esetben a FROM, JOIN, stb. kulcsszavak után következik az SQL utasításokban, de még a HAVING, GROUP BY, ORDER BY, LIMIT, stb. előtt. (ne aggódj, ha ezek közül még nem ismered mindegyiket - a későbbi fejezetekben megismerkedünk velük)
A WHERE kulcsszó után megadhatjuk, hogy mik a szűrési feltételeink. A szűrőfeltételekben gyakran használjuk az alábbi összehasonlító operátorokat:
- = egyenlőség operátor (szövegekre is használható!)
- != vagy <> nem egyenlő operátor (a MySQL mindkét jelölést támogatja – szövegekre is használható!)
- < kisebb operátor
- > nagyobb operátor
- <= kisebb vagy egyenlő operátor
- >= nagyobb vagy egyenlő operátor
Ha úgy érzed, hogy elakadtál, és több segítségre van szükséged, keress bizalommal! Kedvező árú magánórák keretében szívesen segítek elsajátítani a programozás alapjait.
Magánóra ajánlatokPéldául ezek használatával megkereshetjük azokat a megyeszékhelyeket, amelyek lakossága kevesebb, mint 100 000 fő (kipróbálom):
SELECT nev, megye, lakossag FROM megyeszekhely
WHERE lakossag < 100000
Vagy kilistázhatjuk a 9A osztály névsorát (kipróbálom):
SELECT nev FROM diak
WHERE osztaly = "9A"
ORDER BY nev ASC
Ügyeljünk rá, hogy szűrőfeltételek esetén, ha szövegre szeretnénk szűrni, akkor a szöveget mindenképp idézőjelek közé helyezve kell megadnunk - innen tudja a MySQL, hogy itt nem egy másik mezőre, vagy függvényre hivatkozunk, hanem simán egy szöveget szeretnénk megadni.
Amennyiben egy dátum típusú mezőre szeretnénk szűrni, úgy a legbiztosabb, ha a dátumot idézőjelben, év-hónap-nap formátumban adjuk meg. Természetesen a kisebb-nagyobb operátorokat itt is használhatjuk, kilistázhatjuk például azoknak a fordulóknak a névadóját, és a leadási határidejét, amelyek határideje még 2021-ben volt(kipróbálom):
SELECT nevado, hatarido FROM fordulo
WHERE hatarido < "2021-12-31"
Szűrés több feltétel szerint
Ha több szűrőfeltételt is meg szeretnénk adni, akkor az alábbi logikai operátorokat használhatjuk ezek összekapcsolására:
- NOT tagadás kulcsszó
- AND és típusú logikai kapcsolat
- OR vagy típusú logikai kapcsolat
A logikai operátorok műveleti sorrendjének szabályozásához zárójeleket is használhatunk. Nézzünk néhány példát ezek használatára. Ahhoz, hogy lekérdezzük az összes igazgatói intő adatait, az ÉS kapcsolatot fogjuk használni - hiszen csak azokat a rekordokat szeretnénk látni, amelyekre egyszerre teljesül az is, hogy intő típusúak, és az is, hogy igazgatói szintűek (kipróbálom):
SELECT * FROM `beiras` WHERE `tipus` = "intő" AND `szint` = "igazgatói"
Ha viszont az 5-ös vagy 4-es osztályzatokat szeretnénk megjeleníteni, akkor az OR azaz a vagy logikai kapcsolatot használhatjuk (kipróbálom):
SELECT * FROM `jegy` WHERE `jegy` = 5 OR `jegy` = 4
Ha pedig azokat a jegyeket listáznánk ki, amelyek elégtelenek, de nem témazárók (azaz nem szerepel TZ a megjegyzes mezőben), akkor használhatjuk a tagadás operátort is (kipróbálom):
SELECT * FROM `jegy` WHERE `jegy` = 1 AND NOT `megjegyzes` = "TZ"
Persze ezen szűréseket sok más módon is elkészíthetjük - most mindössze azért választottuk ezeket a példákat, mert ezek talán szemléletesek, és könnyen befogadhatóak.
Próbáld ki magad!
Készítsd el az alábbi néhány lekérdezést a MySQL homokozóban, hogy jobban megismerkedj ezekkel a lekérdezésekkel!
- Listázd ki a 9A osztályba járó diákok nevét betűrendben a diak táblából!
- Kérdezd le a beadási dátumát azoknak a megoldásoknak a megoldas táblából, amelyek pontszáma legalább 100!
- Kérdezd le az iskoláját és kódjelét azoknak a nevezőknek a nevezo táblából, akik emelt kategóriába neveztek!
- Készíts lekérdezést, amely megadja az Edme Mariotte-ról elnevezett forduló maximum pontszámát, és beadási határidejét a fordulo táblából!
- Készíts lekérdezést, amely a megyeszekhely táblából kilistázza azon városokat, amelyek lakossága meghaladja a 150 000 főt! A listában jelenjen meg a városok neve, valamint a megyéje, illetve a népességszáma, utóbbi szerint csökkenő sorrendben!
- Lekérdezés segítségével listázd ki a 3 legkisebb olyan megyeszékhely nevét, amelyek népessége legalább 50 000 fő!