Sobes.tech
Middle

Дар бораи синтаксисии пурраи оператори SELECT дар базаи додаҳои муносиб гап занед.

sobes.tech AI

Ҷавоб аз AI

Ҳамагон оператори SQL SELECT барои интихоби маълумот аз як ё бештар аз як ҷадвал истифода мешавад. Синтаксиси пурраи он бисёр қисмҳои ихтиёриро дар бар мегирад:

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

Биёед қисмҳои асосиро баррасӣ кунем:

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

    • SELECT: калимаи калидӣ, ки нишон медиҳад, ки маълумот интихоб мешавад.
    • ALL: (Таърифӣ) ҳамаи сатрҳоро, аз ҷумла такрорҳоро дар бар мегирад.
    • DISTINCT: такрорҳоро аз натиҷа хориҷ мекунад.
    • select_expr: израз, ки сутунҳои интихобшуда ё арзишҳои ҳисобшуда (масалан, column_name, function(column), column1 + column2, * барои ҳамаи сутунҳо) муайян мекунад. Мумкин аст, ки ба онҳо номи мустаҳкам (AS) гузошта шавад.
  • FROM table_references:

    • FROM: калимаи калидӣ, ки манбаи маълумотро нишон медиҳад.
    • table_references: рӯйхати ҷадвалҳо, ки аз онҳо маълумот интихоб мешавад. Мумкин аст, ки ҷадвалҳои оддӣ, намоишҳо ё натиҷаҳои пайвастшавӣ (JOIN) бошанд. Навъҳои гуногуни пайвастшавӣ: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: калимаи калидӣ барои филтр кардани сатрҳо бар асоси шарти муайян.
    • where_condition: изрази мантиқӣ, ки операторҳои муқоиса (=, !=, >, <, >=, <=), операторҳои мантиқӣ (AND, OR, NOT), операторҳои диапазон (BETWEEN), рӯйхатҳо (IN), намунаҳо (LIKE) ва санҷишҳо барои NULL (IS NULL, IS NOT NULL) истифода мебаранд.
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: сатрҳоро бо арзишҳои якхела дар сутунҳои муайян гурӯҳбандӣ мекунад барои истифодаи функсияҳои агрегатӣ (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: сутун, израз ё ҷойгиршавии сутун барои гурӯҳбандӣ.
    • ASC | DESC: ба таври ихтиёрӣ, тартиби сортировка дар дохили гурӯҳ (одатан бо ORDER BY).
    • WITH ROLLUP: ба таври ихтиёрӣ, сатри ҷамъбонӣ илова мекунад (барои MySQL).
  • [HAVING having_condition]:

    • HAVING: гурӯҳҳоро бо шарти муайян филтр мекунад, ки аз GROUP BY гирифта шудаанд. Баръакс аз WHERE, HAVING метавонад функсияҳои агрегатиро истифода барад.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: натиҷаҳоро ба тартиб меорад.
    • col_name | expr | position: сутун, израз ё ҷойгиршавии сутун барои тартиб.
    • ASC: ба рӯйхати афзоишӣ (тавсияшуда).
    • DESC: ба рӯйхати коҳишӣ.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: шумораи сатрҳоро маҳдуд мекунад. Барои саҳифасозӣ истифода мешавад.
    • offset: ҷойгиршавӣ аз оғоз (сониян, сатрҳои гузаронидашуда).
    • row_count: шумораи максималии сатрҳо барои баргардондан. Синтаксис метавонад каме фарқ кунад байни SGBD-ҳо (масалан, TOP дар SQL Server).
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • бастани сатрҳо, ки дар транзаксияҳо барои назорати дастрасии ҳамзамон истифода мешаванд.
    • FOR UPDATE: бастани эксклюзивро ба сатрҳо мегирад, ки дигар транзаксияҳо онҳоро тағир дода наметавонанд.
    • LOCK IN SHARE MODE: бастани тақсимшуда мегирад, ки ба дигар транзаксияҳо иҷозат медиҳад, ки сатрҳоро хонанд, аммо на тағир диҳанд (барои MySQL). Дар дигар SGBD-ҳо метавон механизмҳои монанд истифода шаванд (масалан, FOR SHARE).

Тартиби татбиқи қисмҳои оператори SELECT дар иҷрои як савол одатан чунин аст:

  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