Skip navigation

A SELECT utasítás

Egyszerű lekérdezés SELECT utasítással

Az SQL nyelvben a SELECT utasítás szolgál az adatok lekérdezésére. Ennek az utasításnak az alapvető formája a következő

SELECT [DISTINCT] oszloplista FROM táblalista [WHERE feltétel];

A fentii utasításban az oszloplista azt mondja meg, hogy az eredményben milyen oszlopokat szeretnénk látni. A táblalista azt mondja meg, hogy mely táblákat kell összekapcsolni az kívánt adatok eléréséhez. A szögletes zárójelben lévő elemek opcionálisak, vagyis nem kötelező azokat megadni. A WHERE záradék egy szűrési feltételt biztosít az adatok számára, a DISTINCT kulcsszó pedig arra használható, hogy megszüntessük az eredménylistában megjelenő ismétlődő sorokat. Az eredménylista mindig táblát ad vissza (akkor is, ha az egyetlen adatból áll).

A SELECT utasítás záradékai

A SELECT utasítás teljes szintaxisát figyelembe véve az alábbi módon néz ki:

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], ... ]];

A SELECT utasítás utáni oszloplista projekciót jelent az eredménytáblára nézve, vagyis az eredménytáblában csak ezek az oszlopok fognak látszódni.

A FROM utasítás után felsorolt táblákból Descartes-szorzatot képezünk.

A GROUP BY kulcsó hatására az utasítással csoportosítjuk az adatokat a GROUPY BY után megadott oszloplista szerint, vagyis az oszloplistában szereplő azonos értékeket egy csoportba soroljuk. Fontos megjegyezni, hogy ha a lekérdezés GROUP BY utasítást tartalmaz, akkor a SELECT utáni oszloplistában csak ezen oszloplista eleme, valamint összesítő függvény szerepelhet. Amennyiben a GROUP BY után több oszlopot sorolunk fel, úgy a csoportosítás ezen rekord n-esek alapján történik. 

A HAVING záradék a csoportosítás utáni szelekciót, vagyis miután csoportokat képeztünk, ezen csoportosításból választunk ki sorokat.

Az ORDER BY kulcsszó után felsorolt oszloplista alapján rendezzük az eredménytábla sorait. Ha több oszlopot soroltunk fel, akkor a rendezés először az első, majd a második (és így tovább) oszlopok alapján történik.

A SELECT utasítás műveleteinek végrehajtási sorrendje

  1. Descartes-szorzat képzése (FROM)
  2. Szelekció (WHERE)
  3. Csoportosítás (GROUP BY),  ez után már csak a csoport-rekordok maradnak meg, minden más elvész!
  4. Csoport-szelekció (HAVING)
  5. Projekció (SELECT)
  6. Rendezés (ORDER BY)

Összekapcsolások típusai

Természetes összekapcsolás

SELECT * FROM T1, T2 WHERE T1.oszlop = T2.oszlop;
SELECT * FROM T1 NATURAL JOIN T2;

Belső összekapcsolás (INNER JOIN)

SELECT * FROM T1 INNER JOIN T2 ON T1.oszlop = T2.oszlop;

Baloldali külső összekapcsolás

SELECT * FROM T1 LEFT JOIN T2 ON T1.oszlop = T2.oszlop;

Jobboldali külső összekapcsolás

SELECT * FROM T1 RIGHT JOIN T2 ON T1.oszlop = T2.oszlop;

Teljes külső összekapcsolás (a MySQL-ben nincs rá kulcsszó!)

SELECT * FROM T1 FULL OUTER JOIN T2 ON T1.oszlop = T2.oszlop;