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>

A SELECT… FROM … kifejezés

Ha hozzá szeretnénk férni az adatbázisunkban szereplő adatokhoz, például keresni szeretnénk közöttük információkat, akkor az SQL nyelv SELECT ... FROM kulcsszavait használjuk. A lekérdezések felépítése általában az alábbi:

SELECT mezőnevek FROM tábla

A SELECT kulcsszó után felsoroljuk, hogy melyik mezők tartalmát szeretnénk megkapni (később a különféle összesítő függvényeket és számolásokat is itt fogjuk majd végezni - több adat esetén ezeket vesszővel választjuk el. A lekérdezés eredményében a mezők abban a sorrendben fognak megjelenni, ahogy itt felsoroltuk őket.

A FROM kulcsszó után pedig annak a táblának (vagy később akár tábláknak) a nevét kell felsorolnunk, amelyből információt szeretnénk kinyerni.

Ha tehát például a nepesseg táblából vagyunk kíváncsiak a települések nevére, valamint a települések lakosságára, akkor az SQL lekérdezésünk valahogy így nézne ki:

SELECT telepules_nev, lakossag FROM nepesseg

Amennyiben a mezők nevében nincs semmilyen speciális karakter, és minden mezőnév csak egyértelmű (azaz nincs a lekérdezésben több olyan tábla, amikben azonos nevű mezők vannak), akkor a mezők nevét elég a fentebb látható minta szerint felsorolni. Vannak azonban más lehetőségek is a mezőnév megadására:

Nézzünk néhány példát:

SELECT `nev` FROM `diak`

Lekéri a diak nevű táblából az összes rekordot, és ezekből megjeleníti csak a nev mezőt, azaz kilistázza a diákok neveit. (kipróbálom)

SELECT `iskola`, `kodjel` FROM `nevezo`

Lekéri a nevezo táblából az összes rekordot, és ezekből megjeleníti csak az iskola és a kodjel mezőket. (kipróbálom)

SELECT * FROM `fordulo`

Lekéri a fordulo táblából az összes adatot. (kipróbálom)

Próbáld ki!

A fentebbi minták mind olyan táblákra hivatkoznak, amik léteznek az info9 MySQL homokozóban – így könnyedén kipróbálhatod, átírhatod, tesztelheted, boncolgathatod őket! Kattints a példák alatti kipróbálom gombra, vagy másold be őket a homokozóba, és próbáld meg átalakítani őket! Íme néhány ötlet, amit elkészíthetsz belőlük:

Mezők átkeresztelése

Ne feledd!
Az AS kulcsszó után megadott "becenevet" idézőjelben adjuk meg, azaz NEM back quote között!

Bonyolultabb lekérdezések esetén előfordul, hogy egy-egy mezőnek az átláthatóság érdekében más nevet ("becenevet", vagy "álnevet") szeretnénk adni egy lekérdezésen belül. Ezt könnyedén megtehetjük az AS kulcsszó használatával, például az alábbi módon:

SELECT `nev` AS "Tanuló" FROM `diak`

Ha a lekérdezésünkben több mezőt is el szeretnénk nevezni, mindegyiknél külön kell használnunk az AS kulcsszót:

SELECT `iskola` AS "Suli", `kodjel` AS "Kódjel" FROM `nevezo`

Persze olyan is előfordulhat, hogy több mező közül csak egyet nevezünk el, ennek sincs akadálya:

SELECT `nevado` AS "Névadó",  `hatarido` FROM `fordulo`

Próbáld ki a lekérdezéseket a homokozóban, és figyeld meg, ahogy az AS kulcsszó használata miatt megváltozik a kimeneten a mezők elnevezése. Próbálj meg módosítani a lekérdezésen, hogy láthasd, mi változik meg a kimenetben!

Csak egyedi rekordok megjelenítése

Komplexebb lekérdezések esetén előfordulhat, hogy több, tartalmilag teljesen megegyező rekord kerül megjelenítésre. Például, ha a diákoknak csak az osztályát kérjük le, minden osztály annyiszor fog megjelenni, ahány diák rögzítve van az adott osztályból. Ha minden eredményt csak egyszer szeretnénk megjeleníteni, a SELECT után használhatjuk a DISTINCT kulcsszót:

SELECT DISTINCT `osztaly` FROM `diak`

Ez a lekérdezés a DISTINCT kulcsszó miatt minden osztályt csak egyszer fog megjeleníteni! (kipróbálom)

radio¤Melyik táblából fog adatokat lekérdezni az alábbi lekérdezés?
SELECT osztaly, tanar FROM diakok
¤3¤A lekérdezésben szereplő táblákat a FROM kulcsszó után találjuk, a válasz tehát a diakok tábla.¤osztaly¤tanar¤diakok¤osztaly és tanar radio¤Ha szeretnénk, hogy a lekérdezés eredményében a nepesseg nevű mező Lakosságszám néven jelenjen meg, melyik kulcsszót kell alkalmaznunk a mező átnevezéséhez?¤2¤Mezők megjelenési nevét az AS kulcsszóval módosíthatjuk: SELECT nepesseg AS "Lakosságszám" FROM ...¤SELECT¤AS¤DISTINCT¤WHERE radio¤Hány mező fog megjelenni az alábbi lekérdezés eredményében?
SELECT nev, tagozat, evfolyam FROM diakok
¤3¤Mivel 3 mezőt soroltunk fel a SELECT után, így ennyi mező is jelenne meg a kimeneten.¤1¤2¤3¤4 radio¤Adott az alábbi lekérdezés:
SELECT telepules FROM lakcimek

Melyik kulcsszóval kell kiegészítenünk ezt a lekérdezést, hogy minden település neve csak egyszer jelenjen meg - akkor is, ha a táblában több rekordban is szerepel?¤4¤Ahhoz, hogy csak egyedi rekordok jelenjenek meg, mindig a DISTINCT kulcsszót használjuk.¤AS¤UNIQUE¤PRIMARY¤DISTINCT