Sobes.tech
Middle

Povězte o úplné syntaxi operátoru SELECT v relační databázi.

sobes.tech AI

Odpověď od AI

Operátor SQL SELECT se používá k výběru dat z jednoho nebo více tabulek. Jeho úplná syntaxe zahrnuje mnoho volitelných částí:

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

Podívejme se na hlavní části:

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

    • SELECT: klíčové slovo označující výběr dat.
    • ALL: (výchozí) zahrnu všechny nalezené řádky, včetně duplicit.
    • DISTINCT: odstraňuje duplicitní řádky z výsledku.
    • select_expr: výraz, který definuje vybrané sloupce nebo vypočtené hodnoty (například column_name, function(column), column1 + column2, * pro všechny sloupce). Lze používat aliasy s AS.
  • FROM table_references:

    • FROM: klíčové slovo označující zdroj dat.
    • table_references: seznam tabulek, ze kterých jsou data vybírána. Mohou to být jednoduché tabulky, pohledy nebo výsledky spojení (JOIN). Různé typy spojení: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: klíčové slovo pro filtrování řádků na základě podmínky.
    • where_condition: logický výraz využívající srovnávací operátory (=, !=, >, <, >=, <=), logické operátory (AND, OR, NOT), operátory pro rozsahy (BETWEEN), seznamy (IN), vzory (LIKE) a kontrolu na NULL (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: seskupí řádky se stejnými hodnotami ve specifikovaných sloupcích pro použití agregačních funkcí (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: sloupec, výraz nebo pozice sloupce pro seskupení.
    • ASC | DESC: volitelně, určuje pořadí řazení uvnitř skupiny (obvykle s ORDER BY).
    • WITH ROLLUP: volitelně, přidává řádky s celkovými součty (pro MySQL).
  • [HAVING having_condition]:

    • HAVING: filtruje skupiny vytvořené GROUP BY na základě podmínky. Na rozdíl od WHERE může používat agregační funkce.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: řadí výsledkovou množinu.
    • col_name | expr | position: sloupec, výraz nebo pozice pro řazení.
    • ASC: vzestupně (výchozí).
    • DESC: sestupně.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: omezuje počet vrácených řádků. Používá se pro stránkování.
    • offset: posun od začátku výsledku (počet přeskočených řádků).
    • row_count: maximální počet vrácených řádků. Syntaxe se může mírně lišit mezi SGBD (například TOP v SQL Serveru).
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • volitelné zámky řádků, používané v transakcích pro řízení paralelního přístupu.
    • FOR UPDATE: získá exkluzivní zámek na vybrané řádky, brání jejich změně jinými transakcemi.
    • LOCK IN SHARE MODE: získá sdílený zámek, umožňuje jiným transakcím číst řádky, ale nikoliv je měnit (pro MySQL). V jiných SGBD mohou být použity podobné mechanismy (například FOR SHARE).

Pořadí aplikace částí příkazu SELECT při provádění dotazu obvykle je:

  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