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 օպերատորի մասերը կիրառվում են հետևյալ կարգով՝
FROMJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMITFOR UPDATE/LOCK IN SHARE MODE