Sobes.tech
Middle

Porozprávajte o úplnej syntaxe operátora SELECT v relačnej databáze.

sobes.tech AI

Odpoveď od AI

Operátor SQL SELECT sa používa na výber údajov z jedného alebo viacerých tabuliek. Jeho úplná syntax zahŕňa množstvo voliteľných častí:

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

Pozrime sa na hlavné časti:

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

    • SELECT: kľúčové slovo, ktoré označuje výber údajov.
    • ALL: (Predvolené) zahrňuje všetky nájdené riadky, vrátane duplicit.
    • DISTINCT: odstraňuje duplicitné riadky z výsledku.
    • select_expr: výraz, ktorý definuje vybrané stĺpce alebo vypočítané hodnoty (napríklad, column_name, function(column), column1 + column2, * pre všetky stĺpce). Môžu sa používať aliasy s AS.
  • FROM table_references:

    • FROM: kľúčové slovo, ktoré označuje zdroj údajov.
    • table_references: zoznam tabuliek, z ktorých sa údaje vyberajú. Môžu to byť jednoduché tabuľky, pohľady alebo výsledky spojení (JOIN). Rôzne typy spojení: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: kľúčové slovo pre filtrovanie riadkov na základe podmienky.
    • where_condition: logický výraz využívajúci operátory porovnania (=, !=, >, <, >=, <=), logické operátory (AND, OR, NOT), operátory pre rozsahy (BETWEEN), zoznamy (IN), vzory (LIKE) a kontrolu na NULL (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: zoskupí riadky s rovnakými hodnotami v uvedených stĺpcoch na použitie agregačných funkcií (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: stĺpec, výraz alebo pozícia stĺpca pre zoskupenie.
    • ASC | DESC: voliteľne, určuje poradie zoradenia v rámci skupiny (zvyčajne s ORDER BY).
    • WITH ROLLUP: voliteľne, pridáva riadky s celkovými hodnotami (pre MySQL).
  • [HAVING having_condition]:

    • HAVING: filtruje skupiny vytvorené GROUP BY na základe podmienky. Na rozdiel od WHERE môže používať agregačné funkcie.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: zoradí výsledkovú množinu.
    • col_name | expr | position: stĺpec, výraz alebo pozícia pre zoradenie.
    • ASC: vzostupne (predvolené).
    • DESC: zostupne.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: obmedzuje počet vrátených riadkov. Používa sa na stránkovanie.
    • offset: posun od začiatku (počet preskočených riadkov).
    • row_count: maximálny počet riadkov na vrátenie. Syntax sa môže mierne líšiť medzi SGBD (napr. TOP v SQL Serveri).
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • voliteľné zámky riadkov, používané v transakciách na riadenie paralelného prístupu.
    • FOR UPDATE: získa exkluzívnu zámku na vybrané riadky, brániac ich zmene inými transakciami.
    • LOCK IN SHARE MODE: získa zdieľanú zámku, umožňujúc iným transakciám čítať riadky, ale nie ich meniť (pre MySQL). V iných SGBD môžu byť použité podobné mechanizmy (napríklad FOR SHARE).

Poradie aplikácie častí operátora SELECT pri vykonávaní dotazu je zvyčajne:

  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