Sobes.tech
Middle

Pasakokite apie pilną SELECT operatoriaus sintaksę reliacinėje duomenų bazėje.

sobes.tech AI

Atsakymas iš AI

SQL SELECT operatorius naudojamas duomenų pasirinkimui iš vieno ar kelių lentelių. Jo pilnas sintaksis apima daugybę pasirenkamų dalių:

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

Pagrindinės dalys:

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

    • SELECT: žodis, nurodantis duomenų pasirinkimą.
    • ALL: (numatyta) apima visas rastas eilutes, įskaitant dubliavimus.
    • DISTINCT: pašalina dubliuojančias eilutes iš rezultato.
    • select_expr: išraiška, apibrėžianti pasirinktus stulpelius arba skaičiuojamas reikšmes (pvz., column_name, function(column), column1 + column2, * visų stulpelių pasirinkimui). Gali būti naudojami pravardės (AS).
  • FROM table_references:

    • FROM: žodis, nurodantis duomenų šaltinį.
    • table_references: lentelių sąrašas, iš kurių pasirenkami duomenys. Gali būti vienetinės lentelės, vaizdai arba jungtys (JOIN). Skirtingi jungčių tipai: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: žodis, naudojamas eilutėms filtruoti pagal nurodytą sąlygą.
    • where_condition: loginė išraiška, naudojanti palyginimo operatorius (=, !=, >, <, >=, <=), loginės operatorius (AND, OR, NOT), intervalių operatorius (BETWEEN), sąrašus (IN), šablonus (LIKE) ir NULL patikrinimus (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: grupuoja eilutes su tomis pačiomis reikšmėmis nurodytuose stulpeliuose, taikant agregatines funkcijas (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: stulpelis, išraiška arba stulpelio pozicija grupavimui.
    • ASC | DESC: pasirenkama, nustato rūšiavimo tvarką grupėje (dažnai naudojama kartu su ORDER BY).
    • WITH ROLLUP: pasirenkama, prideda galutines reikšmių eilutes (MySQL).
  • [HAVING having_condition]:

    • HAVING: filtruojami GROUP BY sukurti grupės pagal nurodytą sąlygą. Skiriasi nuo WHERE, nes gali naudoti agregatines funkcijas.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: rūšiuoja rezultatų eilutes.
    • col_name | expr | position: stulpelis, išraiška arba stulpelio pozicija rūšiavimui.
    • ASC: didėjimo tvarka (numatyta):
    • DESC: mažėjimo tvarka.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: riboja grąžinamų eilučių skaičių. Gali būti naudojamas puslapiavimui.
    • offset: perėjimas nuo pradžios, praleidžiant tam tikrą eilučių skaičių.
    • row_count: maksimalus eilučių skaičius.
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • pasirenkamas eilučių užraktas, naudojamas transakcijose, norint valdyti paralelinę prieigą:
    • FOR UPDATE: įgyja išskirtinį užraktą pasirinktiems eilių, trukdydamas jų keitimui kitose transakcijose.
    • LOCK IN SHARE MODE: įgyja dalijamą užraktą, leidžiantį kitoms transakcijoms skaityti eilutes, bet ne keisti jas (MySQL). Kitose duomenų bazėse gali būti naudojami panašūs mechanizmai (FOR SHARE).

Bendra tvarka, kaip taikomos SELECT operatoriaus dalys vykdant užklausą:

  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