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 при изпълнение на заявка от SGBD обикновено е:
FROMJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMITFOR UPDATE/LOCK IN SHARE MODE