Ö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>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.
FROM <tábla(k)>
[WHERE <logikai kifejezés(ek)>]
[GROUP BY <csoportosító(k)>]
[HAVING <logikai kifejezés(ek)>]
[ORDER BY <rendezés(ek)>];
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 belső 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) kulcsszavakkal ö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.