Sobes.tech
Middle

Vertel over de volledige syntax van de SELECT-operator in een relationele database.

sobes.tech AI

Antwoord van AI

De SQL-operator SELECT wordt gebruikt om gegevens uit een of meerdere tabellen te selecteren. De volledige syntax omvat veel optionele delen:

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

Laten we de belangrijkste delen analyseren:

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

    • SELECT: sleutelwoord dat aangeeft dat gegevens worden geselecteerd.
    • ALL: (Standaard) omvat alle gevonden rijen, inclusief duplicaten.
    • DISTINCT: verwijdert dubbele rijen uit het resultaat.
    • select_expr: uitdrukking die de geselecteerde kolommen of berekende waarden definieert (bijvoorbeeld, column_name, function(column), column1 + column2, * voor alle kolommen). Aliassen kunnen worden gebruikt met AS.
  • FROM table_references:

    • FROM: sleutelwoord dat de gegevensbron aangeeft.
    • table_references: lijst van tabellen, views of resultaten van joins (JOIN). Types joins: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: sleutelwoord om rijen te filteren op basis van een voorwaarde.
    • where_condition: logische uitdrukking met vergelijkingsoperatoren (=, !=, >, <, >=, <=), logische operatoren (AND, OR, NOT), operatoren voor bereiken (BETWEEN), lijsten (IN), patronen (LIKE) en NULL-controle (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: groepeert rijen met gelijke waarden in de opgegeven kolommen voor het toepassen van aggregatiefuncties (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: kolom, uitdrukking of positie voor groepering.
    • ASC | DESC: sorteervolgorde binnen de groep (gewoonlijk gebruikt met ORDER BY).
    • WITH ROLLUP: optioneel, voegt rijen met totalen toe (voor MySQL).
  • [HAVING having_condition]:

    • HAVING: filtert de door GROUP BY gemaakte groepen op basis van een voorwaarde. In tegenstelling tot WHERE kan HAVING aggregatiefuncties gebruiken.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: sorteert de resultaatset.
    • col_name | expr | position: kolom, uitdrukking of positie voor sortering.
    • ASC: oplopend (standaard).
    • DESC: aflopend.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: beperkt het aantal geretourneerde rijen.
    • offset: verschuiving vanaf het begin.
    • row_count: maximale aantal rijen.
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • optionele vergrendelingen in transacties.
    • FOR UPDATE: exclusieve vergrendeling.
    • LOCK IN SHARE MODE: gedeelde vergrendeling (voor MySQL).

De toepassing van onderdelen van een SQL-query volgt meestal deze volgorde:

  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