SQL è un linguaggio set-oriented:
Il formato di base di un'interrogazione (query) in SQL è:
$$ \text{SELECT [DISTINCT] } \{R_{i1}.C_1, R_{i2}.C_2,..., R_{in}.C_n \ \ | \ \ *\} \\ \text{FROM } R_1, R_2, ..., R_k \\ \text{[WHERE F]}; $$
La clausola di proiezione, SELECT
, determina quali colonne devono ssere presenti nel risultato:
<nome relazione>.<nome colonna>
, o anche solo <nome colonna>
se non ci sono ambiguità (cioè se una colonna con tale nome esiste solo in una delle relazioni considerate)*
per includere tutte le colonne di tutte le relazioni considerateSi può inoltre specificare la clausola DISTINCT
per togliere eventuali tuple duplicate dal risultato.
La clausola FROM
indica quali sono le relazioni su cui si vuole effettuare l'interrogazione.
La clausola di qualificazione, WHERE
, può essere opzionalmente usata per specificare un preficato (cioè una condizione) che le tuple cercate devono soddisfare.
Per valutare un'interrogazione, il DBMS:
FROM
L'ordine delle tuple nella relazione risultato può variare in base a come il DBMS esegue fisicamente la query.
L'ordine delle colonne, invece, è determinato: