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, * բոլոր սյունակների ընտրության համար): Կարող է օգտագործել մականուններ (aliases) 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-ից, բայց կարող է օգտագործել ագրեգատային ֆունկցիաներ:
  • [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: առավելագույն տողերի քանակը:
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • ընտրովի սյունակների սեղմումներ, որոնք օգտագործվում են տրանզակցիաներում՝ համաժամանակյա մուտքը կառավարելու համար:
    • FOR UPDATE: ստանում է բացառիկ սեղմում ընտրված տողերի վրա, խոչընդոտելով նրանց փոփոխությունը այլ տրանզակցիաներից:
    • LOCK IN SHARE MODE: ստանում է բաժանվող սեղմում, որը թույլ է տալիս մյուս տրանզակցիաներին կարդալ տողերը, բայց ոչ փոփոխել դրանք (MySQL-ի համար): Այլ տվյալների բազաներում կարող են օգտագործվել նման մեխանիզմներ (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