SELECT lekérdezés szerkezete:
SELECT megjelenítési feltételek
FROM táblakifejezés
[WHERE szűkítőfeltételek]
[GROUP BY csoportosítási feltételek]
[HAVING csoportfeltételek]
[ORDER BY sorbarendezési feltételek]
[LIMIT 1]
[ ] jelek között megadott részek opcionálisak, azaz nem kell őket megadni!
SELECT megjelenítési feltételek:
Ha minden oszlopot szeretnénk megjeleníteni, akkor a * jelet használjuk (pl. SELECT * FROM ember;).
Ha nem minden oszlopot szeretnénk megjeleníteni, akkor vesszővel elválasztva felsoroljuk az oszlopneveket (pl. SELECT nev, szul_hely FROM ember;).
Az oszlopokat felcimkézhetjük az AS kulcsszó segítségével: (pl. SELECT nev AS `név`, szul_hely AS `születési hely` FROM ember;).
Gyűjtő függvények:
- COUNT() elemek számát adja meg. (pl. SELECT COUNT(ember_az) AS `létszám` FROM ember;)
- SUM() adatok összege
- AVG() átlagszámítás
- MIN() legkisebb elem
- MAX() legnagyobb elem
FROM táblakifejezés:
Ha csak egy táblából listázunk, akkor a táblakifejezés megegyezik a tábla nevével: (pl. SELECT * FROM ember;)
Ha több táblás lekérdezést készítünk, akkor a táblakifejezés a táblák neve mellett az összekapcsolódás módját is tartalmazza.
INNER JOIN Szoros illesztés: Csak azok az egyedek jelennek meg, amelyeknek van kapcsolódásuk a másik táblában (oda-vissza érvényes).
LEFT JOIN, vagy RIGHT JOIN Laza illesztés: Az egyik tábla minden egyede megjelenik, a másik táblából pedig csak azok az egyedek jelennek meg, amelyeknek van kapcsolódásuk az első táblában.
SELECT * FROM ember INNER JOIN auto ON ember.ember_az = auto.tulajdonos
SELECT * FROM ember LEFT JOIN auto ON ember.ember_az = auto.tulajdonos
WHERE szűkítési feltételek:
- < kisebb
- > nagyobb
- <= kisebb egyenlő
- >= nagyobb egyenlő
- = egyenlő
- != nem egyenlő
- <> nem egyenlő
- LIKE tartalmazás
- NOT LIKE nem tartalmazás
Ha több feltételt is megadunk, akkor azokat az AND ill. az OR logikai művelettel kapcsolhatjuk össze. Ha vegyesen használjuk őket, akkor feltétlenül használjunk zárójeleket!
SELECT * FROM ember WHERE (ember_az>5 AND ember_az<10) OR ember_az<7
5-nél nagyobbakat mutatja
SELECT * FROM ember WHERE ember_az>5 AND (ember_az>10 OR ember_az<7)
5-től 7-ig és 10-nél nagyobbak
A fenti két példa mutatja, hogy eltérő eredmenyeket kaphatunk.
ORDER BY sorbarendezési feltételek:
Sorbarendezés lehet növekvő: ASC, nem kötelező kiírni (pl. SELECT * FROM ember ORDER BY szul_ido ASC;)
vagy csökkenő: DESC (pl. SELECT * FROM ember ORDER BY szul_ido DESC;).
Egyszerre több feltételt is megadhatunk vesszővel elválasztva: (pl. SELECT * FROM ember ORDER BY nev ASC, szul_ido DESC;)
HAVING csoportfeltételek:
ha gyűjtőfüggvényeket használunk, a rájuk vonatkozó feltételeket nem a WHERE, hanem a HAVING részbe tesszük
pl.: SELECT szul_hely, count(ember_az) FROM ember WHERE szul_hely LIKE "%e%" GROUP BY szul_hely HAVING count(ember_az)>=10
Azokat a helységneveket listázza, amelyekben van e betű és legalább 10-en laknak ott.
GROUP BY csoportosítás:
Ha használunk gyűjtőfüggvényt, akkor ami szerint csoportosítunk, vagy gyűjtőfüggvény nélkül megjelenítünk, azt a GROUP BY részbe is be kell tenni
pl.: SELECT szul_hely, count(ember_az) FROM ember WHERE szul_hely LIKE "%e%" GROUP BY szul_hely HAVING count(ember_az)>=10
Ebben a példában a szul_hely-re nem alkalmazunk gyűjtőfüggvényt, de szerepel a SELECT részben, ezért a GROUP BY-ba is be kell rakni. Az ember_az-ra alkalmazunk egy COUNT() függvényt, ezért azt nem szabad berakni a GROUP BY-ba, kivéve, ha a feladat külön nem kéri, hogy emberenként csoportosítva kell valamit megszámolni.
minta adatbázis táblái:
Megjegyzések: