Tovább az úton...
A Python tananyagunk több új fejezettel bővült, amelyben új hasznos modulokkal ismerkedünk meg. Jó tanulást!

<info9>

Lekérdezések szűrése a WHERE kulcsszóval

Tudtad?
A WHERE-rel való szűrésnél matematikai műveleteket, illetve néhány függvényt is alkalmazhatunk. Ezek használatáról a későbbi fejezetekben olvashatsz majd!

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:

Itt a húsvét!

Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!

Irány a játék

Pé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:

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!