Sobes.tech
Middle

Pastāstiet par pilnu SELECT operatora sintaksi relāciju datu bāzē.

sobes.tech AI

Atbilde no AI

SQL SELECT operators tiek izmantots datu izvēlei no viena vai vairākiem tabulām. Tā pilnais sintakse ietver daudzus izvēles daļas:

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

Galvenās daļas:

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

    • SELECT: vārds, kas norāda uz datu izvēli.
    • ALL: (noklusējums) ietver visas atrastās rindas, ieskaitot dublikātus.
    • DISTINCT: no rezultāta izņem dublikātus.
    • select_expr: izteiksme, kas nosaka izvēlētās kolonnas vai aprēķinātās vērtības (piem., column_name, function(column), column1 + column2, * visām kolonnām). Var izmantot aizvietotājus (AS).
  • FROM table_references:

    • FROM: vārds, kas norāda uz datu avotu.
    • table_references: tabulu saraksts, no kurām tiek izvēlēti dati. Var būt vienkāršas tabulas, skati vai savienojumi (JOIN). Dažādi savienojumu veidi: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: vārds, kas tiek izmantots rindu filtrēšanai pēc noteiktas nosacījuma.
    • where_condition: loģiska izteiksme, kas izmanto salīdzināšanas operatorus (=, !=, >, <, >=, <=), loģiskos operatorus (AND, OR, NOT), diapazona operatorus (BETWEEN), sarakstus (IN), šablonus (LIKE) un NULL pārbaudes (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: grupē rindas ar vienādām vērtībām norādītajos kolonnās, lai piemērotu agregatīvās funkcijas (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: kolonna, izteiksme vai kolonnas pozīcija grupēšanai.
    • ASC | DESC: izvēles, nosaka kārtības secību grupā (bieži lieto kopā ar ORDER BY).
    • WITH ROLLUP: izvēles, pievieno galīgās vērtību rindas (MySQL).
  • [HAVING having_condition]:

    • HAVING: filtrē GROUP BY izveidotos grupas pēc norādīta nosacījuma. Atšķiras no WHERE, jo var izmantot agregatīvās funkcijas.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: kārto rezultātu rindas.
    • col_name | expr | position: kolonna, izteiksme vai kolonnas pozīcija kārtošanai.
    • ASC: augošā secībā (noklusējums):
    • DESC: dilstošā secībā.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: ierobežo atgriežamo rindu skaitu. Var izmantot lapu skaitīšanai.
    • offset: pārvietojas no sākuma, izlaidojot noteiktu rindu skaitu.
    • row_count: maksimālais rindu skaits.
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • izvēles rindkopības bloķēšana, kas tiek izmantota transakcijās paralēlās piekļuves pārvaldībai:
    • FOR UPDATE: iegūst ekskluzīvu bloķēšanu izvēlētajām rindām, traucējot to izmaiņas citās transakcijās.
    • LOCK IN SHARE MODE: iegūst dalīto bloķēšanu, ļaujot citām transakcijām lasīt rindas, bet ne mainīt tās (MySQL). Citās datu bāzēs var tikt izmantoti līdzīgi mehānismi (FOR SHARE).

Kopumā SELECT operatora daļas tiek piemērotas šādā secībā:

  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