Middle
Vorbește despre sintaxa completă a operatorului SELECT într-o bază de date relațională.
sobes.tech AI
Răspuns de la AI
Operatorul SQL SELECT este utilizat pentru a selecta date din una sau mai multe tabele. Sintaxa sa completă include mai multe părți opționale:
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];
Să analizăm principalele părți:
-
SELECT [ALL | DISTINCT] select_expr, ...:SELECT: Cuvânt cheie care indică selectarea datelor.ALL: (Implicit) Include toate rândurile găsite, inclusiv duplicatele.DISTINCT: Elimină rândurile duplicate din rezultat.select_expr: Expresie care definește coloanele selectate sau valorile calculate (de exemplu,column_name,function(column),column1 + column2,*pentru toate coloanele). Se pot folosi aliasuri cu cuvântulAS.
-
FROM table_references:FROM: Cuvânt cheie care indică sursa de date.table_references: Lista tabelelor din care se selectează date. Pot fi tabele simple, vizualizări sau rezultate ale unor join-uri. Diferite tipuri de join-uri:INNER JOIN,LEFT [OUTER] JOIN,RIGHT [OUTER] JOIN,FULL [OUTER] JOIN,CROSS JOIN.
-
[WHERE where_condition]:WHERE: Cuvânt cheie pentru filtrarea rândurilor pe baza unei condiții.where_condition: Expresie logică folosind operatori de comparație (=,!=,>,<,>=,<=), operatori logici (AND,OR,NOT), operatori pentru intervale (BETWEEN), liste (IN), modele (LIKE) și verificare pentru NULL (IS NULL,IS NOT NULL).
-
[GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:GROUP BY: Grupează rândurile cu valori identice în coloanele specificate pentru aplicarea funcțiilor agregate (COUNT,SUM,AVG,MIN,MAX).col_name | expr | position: Coloana, expresie sau poziție a coloanei pentru grupare.ASC | DESC: Opțional, determină ordinea sortării în interiorul grupului (de obicei folosit cuORDER BY).WITH ROLLUP: Opțional, adaugă rânduri cu valori totale (pentru MySQL).
-
[HAVING having_condition]:HAVING: Filtrează grupurile create deGROUP BYpe baza unei condiții. Spre deosebire deWHERE,HAVINGpoate folosi funcții agregate în condiție.
-
[ORDER BY {col_name | expr | position} [ASC | DESC], ...]:ORDER BY: Sortează setul de rezultate.col_name | expr | position: Coloana, expresie sau poziție pentru sortare.ASC: (Implicit) Sortare crescătoare.DESC: Sortare descrescătoare.
-
[LIMIT [offset,] row_count | row_count OFFSET offset]:LIMIT: Limitează numărul de rânduri returnate. Poate fi folosit pentru paginare.offset: Deplasare de la începutul setului de rezultate (număr de rânduri ignorate).row_count: Numărul maxim de rânduri returnate. Sintaxa poate varia ușor între diferite SGBD-uri (de exemplu,TOPîn SQL Server).
-
[FOR UPDATE | LOCK IN SHARE MODE]:- Blocări opționale ale rândurilor, folosite în tranzacții pentru controlul accesului concurențial.
FOR UPDATE: Obține o blocare exclusivă pe rândurile selectate, împiedicând modificarea lor de către alte tranzacții.LOCK IN SHARE MODE: Obține o blocare partajată, permițând altor tranzacții să citească rândurile, dar nu să le modifice (pentru MySQL). În alte SGBD-uri pot fi folosite mecanisme similare (de exemplu,FOR SHARE).
Ordinea aplicării părților operatorului SELECT în execuția unei interogări de către SGBD este de obicei:
FROMJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMITFOR UPDATE/LOCK IN SHARE MODE