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 lehetAS-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ábanORDER 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 aGROUP BYáltal létrehozott csoportokat egy feltétel alapján. Ellentétben aWHERE-rel, aHAVINGaggregá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.TOPSQL 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:
FROMJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMITFOR UPDATE/LOCK IN SHARE MODE