L'istruzione per leggere dati da delle tabelle é. SELECT ed ha la seguente sintassi:
SELECT [DISTINCT] Campo1 [AS
AliasCampo1], Campo2 [AS
AliasCampo2] FROM
Tabella1 AliasTabella1, Tabella2
AliasTabella2 [WHERE Condizioni] [GROUP BY
Campo1, Campo2, … [HAVING
CondizioneAggregata]] [ORDER BY Campo1 [DESC], Campo2 [DESC, …]
DISTINCT Specifica che non vanno prese le ennuple duplicate nel risultato
Nella clausola FROM é possibile anche specificare delle clausole di JOIN:
[INNER] JOIN (corrisponde a Teta JOIN
Es: FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.Campo1 = Tabella2.Campo2
NATURAL JOIN
Es: FROM Tabella1 NATURAL JOIN Tabella2
RIGHT, LEFT, [FULL] OUTER JOIN: Join esterni
OPERATORI AGGREGATI
COUNT: Numero di elementi
SELECT COUNT (*) FROM -> numero di record
SELECT COUNT (DISTINCT Campo1) FROM -> numero di valori diversi assunto da Campo1
SUM: Somma di valori (es. SELECT SUM(Campo1) FROM)
MAX: Valore più alto
MIN: Valore più basso
AVG: Valore medio
GROUP BY
Raggruppa i record secondo certi valori. I campi aggregati verranno calcolati per ciascuno di quei valori.
L'esempio seguente estrae lo stipendio più basso per ogni citta:
SELECT MIN(Stipendio) FROM
Dipendenti
GROUP BY
Citta
Se uso una GROUP BY nella select posso mettere solo gli attributi del GROUP BY e le aggregazioni. Es:
Sì: SELECT SELECT Citta, MIN(Stipendio) FROM
Dipendenti
GROUP BY
Citta
No: SELECT SELECT Nome, MIN(Stipendio) FROM
Dipendenti
GROUP BY
Citta
WHERE
Esprime una condizione della query
HAVING
Permette di esprimere condizioni sui valori aggregati. Praticamente é come una WHERE effettuata dopo il raggruppamento
Es.: La query seguente filtra i dirigenti, li raggruppa per dipartimento, prende la somma degli stipenti dei dirigenti per dipartimento e ritorna solo i record la cui somma degli stipenti é maggiore di 10000
SELECT Dipartimento, SUM(Stipendio) AS Totale FROM Dipendenti WHERE Grado = 'Dirigente' HAVING SUM(Stipendio) > 10000
ORDER BY
Ordina per uno o più campi il risultato.
Si può specificare le parole chiave ASC (default) per ordine crescente oppure DESC per descrescente.
Se si specificano più campi (separati da virgole) l'ordine sarà valutato da sinistra a destra (esattamente come ci si aspetterebbe!)
Nessun commento:
Posta un commento