8. Espressioni e funzioni
Antonio Grande
grande@scec.eco.uniroma1.it
Dipartimento matematica per le decisioni economiche, finanziarie ed assicurative
Lo schema relazionale originariamente non conteneva riferimenti a nessuna operazione aritmetica o carattere, e la possibilità di effettuare calcoli di questo tipo, ovvero di utilizzare funzioni più complesse, venne proposta successivamente da alcuni studiosi come ampliamento di quella teoria.
Il linguaggio SQL, a seguito di queste modifiche, analogamente a quanto avviene per tutti i linguaggi di programmazione, ammette la scrittura di espressioni numeriche o carattere costituite da opportune combinazioni di attributi, costanti, parentesi e dei corrispondenti operatori. Espressioni così formate, possono essere scritte in una query dopo il comando SELECT, in una condizione con WHERE, di seguito alla parola ORDER BY. Nella query [6], abbiamo già visto un esempio di espressione aritmetica, costruita utilizzando il simbolo di prodotto "*" che insieme ai simboli "/", "-", "+", costituisce l'insieme degli operatori aritmetici.
8.1 Le espressioni carattere
Un esempio di espressione carattere viene mostrato nella prossima query. In questo caso l'unico operatore disponibile, viene utilizzato per concatenare tra loro due stringhe: si tratta dell'operatore "||" che adoperiamo per unire nella stessa tupla il nome del costruttore con la città sede della casa costruttrice. I due dati precedentemente elencati sono separati tra loro con il carattere "-". Si nota, analogamente a quanto visto nel comando INSERT del capitolo 2, che la costante trattino è racchiusa tra due apici.
SELECT casa || ' - ' || citta FROM modello;
| CASA||' - '||CITTA |
|---|
| de tomaso - modena |
| ferrari - modena |
| fiat - torino |
| tretre - disneyland |
| citroen - paris |
8.2 Le funzioni
La costruzione di espressioni più complesse, oltre le combinazioni di parentesi, operatori, costanti, si ottiene con le funzioni. Le funzioni possono essere sintatticamente pensate come un’evoluzione degli operatori (si pensi come esempio al simbolo che si usa in matematica per rappresentare l'operazione di radice quadrata), ma differiscono da questi perché sostituiscono al simbolo un nome che le identifica univocamente; ciascuna funzione ha un certo numero di argomenti che varia da caso a caso, racchiusi tra parentesi e separati da virgole.
Le funzioni del linguaggio SQL possono suddividersi in:
- Scalari
- Colonna o di gruppo
La prima evidente differenza tra queste due famiglie di funzioni riguarda il comportamento nei confronti delle tuple: le funzioni scalari restituiscono un valore per ogni tupla originale, mentre le funzioni colonna utilizzano gruppi di v...