Linguaggio di query (I parte)
Il linguaggio di query è usato per le interrogazioni, ovvero per selezionare determinate tuple da una o più relazioni che soddisfano se richieste espresse nella query. Il formato più comune è:
- SELECT o clausola di proiezione
- FROM o clausola from
- WHERE o clausola di qualificazione
Clausola SELECT
SELECT (ultima ad essere analizzata) specifica le colonne che devono essere restituite dalla relazione, ovvero "proiezione" della tabella che si intende visualizzare dall'interrogazione fatta.
- La notazione "nome_relazione.nome_colonna", indica il nome della colonna di una determinata tabella che si intende visualizzare
- La notazione "nome_relazione", indica che si intende visualizzare tutte le colonne di una tabella
- La notazione "*", indica che si intende visualizzare tutte le colonne di tutte le relazioni espresse nella clausola FROM.
Nel comando SELECT è inoltre possibile specificare la clausola DISTINCT che se utilizzata elimina dalla proiezione eventuali tuple duplicate, se viene omessa invece le tuple duplicate vengono visualizzate normalmente.
Clausola FROM
FROM in questa clausola si specificano tutte le tabelle che devono essere analizzate nella query (ovvero solo le tabelle dalle quali si prendono i dati per l'interrogazione), viene raccolta quindi una lista di relazioni separate da virgole.
Clausola WHERE
WHERE è effettivamente la clausola che fa la selezione, ovvero qualifica le tuple delle relazioni che devono essere restituite dall'interrogazione. Essa lavora in una combinazione booleana di predicati (AND, OR, NOT).
I predicati
Oltre ai predicati booleani (AND, OR, NOT) esistono predicati semplici, come gli operatori relazionali di confronto (<, >, >=, <=, =, <>), che possono essere combinati con quelli booleani.
Es. e op e’, dove:
- e ed e’ sono espressioni che denotano valori, possono essere formate semplicemente da una colonna o dalla somma (o altre operazioni) di più colonne
- op è un operatore relazionale di confronto, oltre a quelli già visti SQL ne offre molti altri
In una interrogazione viene quindi prima valutata la clausola FROM, una volta note le tabelle dalle quali prendere i dati, si analizza la clausola WHERE che identifica le tuple che soddisfano tale clausola e infine si applica la clausola SELECT che mostra solo le colonne interessare delle tuple scelte dall'interrogazione (ovviamente l'ordine delle tuple che compaiono dall'interrogazione dipende dall'ordine in cui le colonne erano elencate nella clausola SELECT, se si usa "*" (STAR) l'ordine è quello in cui le relazioni compaiono nella clausola FROM e per ogni relazione dipendono dall'ordine in cui erano elencate al momento della definizione della relazione (al momento di CREATE TABLE).
Operatori e Funzioni
SQL fornisce numerosi operatori e funzioni utilizzati per specificare predicati ed espressioni, i più comuni sono:
Operatori di confronto
- <, >, >=, <=, =, <>
- BETWEEN permette di identificare l'appartenenza di un valore ad un intervallo (es. e BETWEEN v1 AND v2, la forma negata è NOT BETWEEN)
- IN permette di identificare l'appartenenza di un valore a un insieme specificato (es. e IN (v1, v2, v3, …), la forma negata è NOT IN)
- LIKE permette di eseguire semplici operazioni di "pattern-matching" su stringhe (es. e LIKE pattern, dove pattern è una stringa che contiene caratteri come "%" o "_", con % si denota una sequenza di caratteri arbitrari di lunghezza qualsiasi, con _ si denota esattamente un carattere, la forma negata è sempre NOT LIKE)
Se si volessero determinare i film che hanno come terza lettera nel titolo la "d" basterebbe: SELECT * FROM Film WHERE titolo LIKE '_ _ d%';
Funzioni e espressioni
- Aritmetiche: Oltre agli usuali operatori aritmetici (+, -, *, /) comprendono:
- funzione ABS(n), che, dato un valore numerico n, ne calcola il valore assoluto
- funzione MOD(n,b) che, dati due valori interi n e b, calcola il resto della divisione intera di n e b
- funzioni logaritmiche, esponenziali, per il calcolo della radice quadrata, dell'elevamento a potenza, della parte intera superiore e inferiore
- Su stringhe: Oltre all'operatore di concatenazione denotato da || comprendono:
- LENGTH(str) restituisce...
-
Progetto Basi
-
Gestione dell'informazione e basi di dati - basi di dati relazionali
-
Basi di dati - linguaggio SQL
-
Basi di dati