Összetett lekérdezések:

A SELECT utasítás szolgál arra, hogy az adatbázisból lekérdezést végezzünk. Az alaplekérdezés használatakor is lehetőség van a táblázat oszlopai és sorai közül válogatni, ill. használhatunk kifejezéseket, melyekkel kiszámított értékek is a jelentés részét képezhetik. A halmazműveletek segítségével összekapcsolhatunk több SELECT utasítást, az eredmény 2 v. több eredménytábla adatait tartalmazó jelentés lesz.

Az utasítás általános formája:

SELECT <jellemzők> 
FROM <tábla(k)>
[WHERE <logikai kifejezés(ek)>]
[GROUP BY <csoportosító(k)>]
[HAVING <logikai kifejezés(ek)>]
[ORDER BY <rendezés(ek)>];
A záradékok közül csak az első kettő kötelező. A többi közül bármelyik szerepelhet de csak a fenti sorrendben. A lekérdezés művelete eredményül 1 újabb táblát állít elő. A <jellemzők> definiálják az eredmény tábla oszlopait, <táblák> adják meg a lekérdezésben résztvevő táblák nevét, a <logikai kifejezés> segítségével “válogathatunk” az eredmény sorai között. A <csoportosítás> az eredmény tábla sorait rendezi egymás mellé, illetve a <rendezés> a megjelenő sorok sorrendjét határozza meg.

Csoportképzés:

A GROUP BY cikkely azt a célt szolgálja, hogy csoportosítsa a sorokat egy vagy több oszlop értékei szerint. A magadott oszlop azonos értékével rendelkező sorok egy csoportot képeznek. A GROUP BY után több oszlopnevet is meg lehet adni (vesszővel elválasztva), hogy azok alapján képezzen csoportokat. A HAVING záradékkal a csoportokra vonatkozóan adhatunk meg feltételt.

Oszlopfüggvények:

Az SQL öt olyan operátort biztosít, amelyek egy oszlop értékeinek bizonyos fajta összesítését végzik el. Ezek az operátorok a következők:

  • SUM (oszlopnév): összegzi az oszlopértékeket
  • AVG (oszlopnév): számtani közepet (átlagot) számol
  • MIN (oszlopnév): a legkisebb értéket adja
  • MAX (oszlopnév): a legnagyobb értéket adja
  • COUNT (oszlopnév): az oszlopban lévő sorok számát adja meg. A DISTINCT kulcsszóval kiszűrhetőek az ismétlődések..

Belső SELECT-ek:

A SELECT utasítás WHERE cikkelyében megadott feltételben nemcsak skalár értékeket hasonlíthatunk össze, hanem akár sorokat vagy relációkat is. A SELECT utasítás WHERE cikkelyében állhat további SELECT utasítás. Az így előálló SELECT utasításokat belső SELECT-eknek nevezzük. A belső SELECT-ek felépíté­sére az általános szabályok érvényesek. A bel­ső SELECT-nek is lehet belső SELECT-je, a végrehajtás mindig belülről kifelé történik. Belső SELECT állhat a HAVING cikkelyben is.

Kvantifikált feltételek, korrelálatlan és korrelált belső kiválasztások:

A WHERE cikkelyben feltételekből összetett kifejezéseket állíthatunk össze, melyeknek teljesülniük kell ahhoz, hogy a sor v. oszlop leválogatásra kerüljön.

  • Egyenlőtlenségen alapuló kiválogatás: A WHERE cikkelyben használhatunk matematikai szimbólumokat is a sorok kiválasztásakor megadott határokat kijelölésére: = egyenlő, <> nem egyenlő, > nagyobb, >= nagyobb vagy egyenlő, < kisebb, <= kisebb vagy egyenlő.
  • Több feltétel összekapcsolása: A leválogatási feltételeket az OR (vagy) és az AND (és) kulcssza­vakkal összekapcsolhatjuk.
  • Korlátokon alapuló leválogatás: BETWEEN kulcsszó használata. Pl: WHERE N BETWEEN 5 AND 7 ( ha N egész számokat tartalmazó oszlop akkor az 5, 6 és a 7 is megfelel a feltételnek)
  • Sorok kiválasztása értéklisták alapján: a feltételben megadott IN kulcsszót követően megadott számokat tartalmazó sorok lesznek a lekérdezés eredménye. IN után reláció is megadható. Az IN előtt oszlopnév áll természetesen.
  • Válogatás szöveges információk alapján: A szöveget tartalmazó mezők tartalmára nem célszerű hasonló pontossággal kérdezni, mint a számot tartalmazó mezőkre. A szövegmezőre történő leválogatást támogatja a LIKE kulcsszó, amivel korlátozhatjuk az összehasonlítás szigorúságát.
  • Tagadáson alapuló kiválasztás: Úgy is megfogalmazhatjuk a leválogatás feltételét, hogy mindazon sorok legyenek leválogatva, melyekre a feltétel nem teljesül.
  • Korrelációs belső kiválasztás, EXIST -el: csak azt mutatja meg, hogy van-e a feltételnek megfelelő sor.
  • Egyszerű rendezés: A lekérdezés adatainak sorrendjét az ORDER BY cikkely rendezi valamely oszlopban növekvő (ASC: alapértelmezés) vagy csökkenő (DESC) sorrendben.