Sobes.tech
Middle

Mesélj a relációs adatbázisban a SELECT művelet teljes szintaxisáról.

sobes.tech MI

Válasz az MI-től

Az SQL SELECT operátor arra szolgál, hogy adatokat válasszunk ki egy vagy több táblából. Teljes szintaxisa számos opcionális részt tartalmaz:

SELECT [ALL | DISTINCT]
    select_expr, select_expr, ...
FROM
    table_references
[WHERE
    where_condition]
[GROUP BY
    {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
[HAVING
    having_condition]
[ORDER BY
    {col_name | expr | position}
    [ASC | DESC], ...]
[LIMIT
    [offset,] row_count | row_count OFFSET offset]
    [FOR UPDATE | LOCK IN SHARE MODE];

Nézzük meg a fő részeket:

  • SELECT [ALL | DISTINCT] select_expr, ...:

    • SELECT: kulcsszó, ami az adatok kiválasztását jelzi.
    • ALL: (Alapértelmezett) minden megtalált sort tartalmaz, beleértve a duplikátumokat.
    • DISTINCT: eltávolítja a duplikált sorokat az eredményből.
    • select_expr: kifejezés, ami a kiválasztott oszlopokat vagy számított értékeket határozza meg (pl. column_name, function(column), column1 + column2, * az összes oszlop kiválasztásához). Aliasokat lehet AS-szal használni.
  • FROM table_references:

    • FROM: kulcsszó, ami az adatforrást jelzi.
    • table_references: azon táblák listája, amelyekből adatokat választunk ki. Lehetnek egyszerű táblák, nézetek vagy összekapcsolások eredményei (JOIN). Különböző összekapcsolási típusok: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: kulcsszó, amivel szűrjük a sorokat egy adott feltétel alapján.
    • where_condition: logikai kifejezés, ami összehasonlító operátorokat (=, !=, >, <, >=, <=), logikai operátorokat (AND, OR, NOT), tartomány operátorokat (BETWEEN), listákat (IN), mintázatokat (LIKE) és NULL ellenőrzéseket (IS NULL, IS NOT NULL) tartalmaz.
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: sorokat csoportosít azonos értékű oszlopok szerint, hogy aggregált függvényeket alkalmazzunk (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: oszlop, kifejezés vagy oszlopszám a csoportosításhoz.
    • ASC | DESC: opcionálisan, a rendezés sorrendjét határozza meg (általában ORDER BY-vel együtt használják).
    • WITH ROLLUP: opcionálisan, összesítő sorokat ad hozzá (MySQL esetén).
  • [HAVING having_condition]:

    • HAVING: szűri a GROUP BY által létrehozott csoportokat egy feltétel alapján. Ellentétben a WHERE-rel, a HAVING aggregált függvényeket is tartalmazhat.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: rendezi az eredményhalmazt.
    • col_name | expr | position: oszlop, kifejezés vagy pozíció a rendezéshez.
    • ASC: növekvő sorrend (alapértelmezett).
    • DESC: csökkenő sorrend.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: korlátozza a visszaadott sorok számát. Lapozáshoz használható.
    • offset: eltolás a kezdőponttól (kihagyott sorok száma).
    • row_count: a visszaadott sorok maximális száma. Szintaxisa különböző SGBD-ken eltérhet (pl. TOP SQL Server-ben).
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • opcionális sorzárak, tranzakciókban a párhuzamos hozzáférés kezelésére.
    • FOR UPDATE: kizárólagos zárolást szerez a kiválasztott sorokon, megakadályozva más tranzakciók módosítását.
    • LOCK IN SHARE MODE: megosztott zárolást szerez, lehetővé téve más tranzakcióknak a sorok olvasását, de nem módosítását (MySQL esetén). Más SGBD-kben hasonló mechanizmusok lehetnek (pl. FOR SHARE).

Az SELECT operátor részeinek alkalmazási sorrendje általában:

  1. FROM
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. LIMIT
  10. FOR UPDATE / LOCK IN SHARE MODE