A SELECT-utasítás
A SQL leggyakrabban használt utasítása a SELECT, a választó lekérdezés alapvető utasítása. A visszatérési értéke egy vagy több rekord, attól függően, hogy hány felel meg a lekérdezésnek. Ezt a visszatérési értéket eredményhalmaznak nevezzük.
A SELECT utasítás teljes szerkezete, szintaxisa a következő:
SELECT [DISTINCT] oszlop1[, [DISTINCT] oszlop2, …]
FROM tábla1[, tábla2, …]
[WHERE feltétel ]
[GROUP BY oszlop1[, oszlop2, …]]
[HAVING csoportfeltétel ]
[ORDER BY oszlop1 [DESC] [, oszlop2 [DESC], … ]]
[LIMIT X];
A SELECT esetén, ha az összes oszlopot szeretnénk kilistázni, akkor nem szükséges az összes oszlop felsorolása, elég csak csillaggal (*) hivatkoznunk rájuk. A SELECT általában egy hosszabb utasítást eredményez, de írhatunk mindent egy sorba vagy tetszés szerint alkalmazhatunk sortöréseket is, hiszen az SQL nem érzékeny a sortörésekre, ahogyan nem érzékeny a kis- és nagybetűk használatára sem.
A SELECT utasítás részeinek végrehajtási sorrendje szigorúan kötött a következő módon:
- Descartes-szorzat képzése (FROM)
- Szelekció (WHERE)
- Csoportosítás (GROUP BY) – a használata után kizárólag a csoportadatok maradnak meg
- Csoport-szelekció (HAVING)
- Projekció (SELECT)
- Rendezés (ORDER BY)
A FROM segítségével határozzuk meg, hogy mely táblá(k)ból szeretnénk az adatokat lekérdezni. A SELECT után meghatározott oszlopok értékeit a FROM után definiált táblá(k)ból szedi ki, s adott esetben az oszlopnév nem mindig elegendő, hiszen előfordulhat, hogy két táblában azonos nevű oszlop van, s olyankor a tábla nevét is meg kell adni az oszlopnév mellett (de erre a táblák összekapcsolásánál térünk majd ki).
A WHERE utasítást arra használjuk, hogy a lekérdezést szűrni tudjuk, s a lekérdezés eredményeként csak azok a rekordok kerülnek megjelenítésre, amelyek eleget tesznek a WHERE után meghatározott feltételeknek.Itt meghatározhatunk egyszerű és összetett feltételeket, melyek során használhatunk logikai, aritmetikai és relációs operátorokat is.
A GROUP BY utasítást arra használjuk, hogy összegezzék vagy csoportosítsák az azonos értékű oszlopok rekordjait, s általában különböző aggregáló függvényekkel együtt használják. A kulcsszó után csak egyszerűen meg kell adnunk az(oka)t az oszlop(okat), amely(ek)et csoportosítani szeretnénk. Az aggregáló függvények: MIN(), MAX(), COUNT(), AVG(), SUM()
A HAVING utasítás ugyanazt a célt szolgálja, mint a WHERE , de ezt GROUP BY után használjuk.
Az ORDER BY segítségével a lekérdezések eredményét, azaz a kapott eredményhalmazt rendezhetjük, amely lehet növekvő vagy csökkenő. Alapértelmezés szerint növekvő (ASC) rendezés kerül végrehajtásra, ahol a módosítót nem kell kiírni, de lehetséges, amelyet a DESC módosítóval tudunk alakítani csökkenőre. Az ORDER BY után meg kell adnunk azokat az oszlopokat, amelyek alapján rendezni szeretnénk. Abban az esetben, ha több oszlopot sorolunk fel, a felsorolás sorrendje a rendezés sorrendje is, vagyis az első oszlop az elsődleges rendezést állítja be, a második csak abban az esetben érvényesülhet, ha az elsődleges esetén ugyanaz az érték.
A fentiek mellett ott van egy LIMIT utasítás, amely a lekérdézés eredményéből csak meghatározott számú rekordot enged kilistázni, illetve DISTINCT, amely a teljesen azonos tartalmú kilistázandó rekordok közül csak egyet ír ki, s így az ismétlődések elnyomására használják.