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:

  • ember(ember_az,nev,szul_hely,szul_ido)
  • auto(rendszam,tulajdonos,marka,tipus,evjarat,szin)
  • Megjegyzések:

  • ha egy táblanév, oszlopnév, vagy alias (AS) név tartalmaz ékezetet, szóközt, százalékjelet, vagy más speciális karaktert, tegyük `` jelek közé, mert különben szintaktikai hibát jelezhet!