SQL può fare molto più che semplici reports, ma bisogna porre sempre attenzione sul set di record
ritornati da ogni query – un set vuoto, un singolo record o molti records.
SHOW TABLES
04 Con quali Informazioni si lavorerà?
Quale tipologia di informazioni si vogliono considerare per ogni Record?
In SQL le colonne di una tabella sono chiamate Attributi.
Quando si lavora con una tabella in particolare, bisogna identificare gli attributi da evidenziare
attraverso il comando SELECT.
La seguente query ritorna tutti gli attributi (colonne) di una tabella chiamata Student:
SELECT * FROM student
Questa query tornerà tutti i records dalla tabella e mostrerà tutte le colonne.
Questa espressione permette di selezionare dalla tabella Student, le colonne name e room_id, per
tutti i records che contengono, per la colonna name, un testo che inizi con la lettera J.
06 Combinare le Informazioni da Tabelle Multiple
Si può lavorare in SQL con più tabelle attraverso i comandi JOINs : JOIN /LEFT/RIGHT.
Ci sono tre tipologie di Join: INNER , LEFT , RIGHT , e solitamente vengono utilizzati FULL.
INNER e LEFT joins sono molto comuni inoltre.
Una Inner Join prende due tabelle e ritorna soltanto i records che combaciano con determinate
condizioni per entrambe – intersezione.
Una Left Join ritorna tutti i records dei valori specificati sulla parte sinistra dell’equazione e
soltanto i records combacianti del data set sulla parte destra dell’equazione.
L’opposto ovviamente per la Right Join.
Una Full Join ritornerà il prodotto cartesiano dei records, e Nulls laddove non vi sono Matches
nella combinazione.
Esempio di Inner Join:
Il commando SQL UNION permette di combinare il risultato di due comandi SELECT in maniera
simile ad una FULL JOIN.
07 Organizzare i Risultati
Per poter organizzare i dati di una tabella è necessario il comando ORDER BY – ordinare i records
per i valori nella colonna specificata.
L’ordinamento di default è ASC –> Ascending. Specificando DESC Descending si otterrà
l’opposto.
Esempio:
SELECT *
FROM [Corso].[dbo].[Country];
SELECT *
FROM [Corso].[dbo].[City];
Questa è la forma più semplice di aggregazione possibile. La funzione Count non fa altro che
contare tutti i records presenti nella tabella selezionata. L’asterisco è ad indicare di selezionare
tutte le colonne presenti in ogni record, ma è ovviamente una dicitura opzionale in quanto l’utente
può limitarsi ad indicare anche una sola colonna.
02 Funzione Aggregate & Joins
Proviamo ora ad utilizzare la funzione Count in un contesto di due tabelle associate:
SELECT *
FROM [Corso].[dbo].[Country]
Inner Join [Corso].[dbo].[City]
on City.Country_Id = Country.Id
SELECT *
FROM [Corso].[dbo].[Country]
Left Join [Corso].[dbo].[City]
on City.Country_Id = Country.Id
Possiamo notare:
1. Abbiamo un totale di 8 righe in quanto sono presenti anche quelle sulla tabella a sinistra
(Country) le quali non hanno correlazione con la tabella a destra (City).
2. La seconda query conta le righe presenti nella tabella risultante finale
3. La terza query offre un maggiore livello di dettaglio. I valori vuoti non vengono contati.
03 Funzioni SQL di Aggregazione
Abbiamo diverse funzioni di aggregazione:
COUNT: conta il numero di elementi di un gruppo definito
SUM: calcola la somma di un dato attributo/espressione nel gruppo definito
AVG: calcola la media di un dato attributo/espressione nel gruppo definito
MIN: trova il minimo di un gruppo definito
MAX: trova il massimo di un gruppo definito
APPROX_COUNT_DISTINCT
CHECKSUM_AGG
COUNT_BIG
GROUPING
GROUPING_ID
STDEV
STDEVP
STRING_AGG
VAR
VARPB
Tutte queste funzioni, anche se non necessario, richiedono l’utilizzo della clausola GROUP BY in
maniera da identificare un gruppo – dimensione sui dati selezionati.
Esempio:
Ho una lista di atleti professionisti suddivisi per sport di appartenenza.
Da tale lista, voglio ritornare l’altezza minima, massima e media degli atleti, suddivisa per sport
praticato.
04 Esempi di Funzione di Aggregazione
Facciamo qualche esempio a partire dalle tabelle:
SELECT
Count(lat) as Lat_Count
,Sum(lat) as Lat_Sum
,Avg(lat) as Lat_Avg
,Min(lat) as Lat_Min
,Max(lat) as Lat_Max
FROM [Corso].[dbo].City
SELECT
country_name
,Count(lat) as Lat_Count
,Sum(lat) as Lat_Sum
,Avg(lat) as Lat_Avg
,Min(lat) as Lat_Min
,Max(lat) as Lat_Max
FROM [Corso].[dbo].City
Inner Join Country on Country_Id = Country.Id
Group by Country.Id, country_name;
Attraverso questa query otteniamo i valori aggregati suddivisi per Nazioni di appartenenza.
In caso avessimo altri attributi – dimensioni nella query queste dovranno esser presenti
obbligatoriamente nella clausola di Group by.
DDL
DDL è un nome breve di Data Definition Language, che si occupa di schemi e descrizioni di
database, di come i dati dovrebbero risiedere nel database.
CREA - per creare il database e i suoi oggetti come (tabella, indice, viste, procedura di
memorizzazione, funzione e trigger)
ALTER: modifica la struttura del database esistente
DROP: elimina gli oggetti dal database
TRUNCATE: rimuove tutti i record da una tabella, inclusi tutti gli spazi allocati per i record
COMMENTO - aggiungi commenti al dizionario dei dati
RENAME: rinomina un oggetto
DML
DML è un nome breve di Data Manipulation Language che si occupa della manipolazione dei dati e
include le istruzioni SQL più comuni come SELEZIONA, INSERISCI, AGGIORNA, ELIMINA, ecc., E
viene utilizzato per archiviare, modificare, recuperare, eliminare e aggiornare i dati nel database.
SELEZIONA: recupera i dati da un database
INSERISCI: inserire i dati in una tabella
AGGIORNA: aggiorna i dati esistenti all'interno di una tabella
ELIMINA - Elimina tutti i record da una tabella del database
MERGE - Funzionamento UPSERT (inserire o aggiornare)
CHIAMATA: chiama un sottoprogramma PL / SQL o Java
SPIEGARE PIANO - interpretazione del percorso di accesso ai dati
LOCK TABLE - controllo della concorrenza
DCL
DCL è un nome breve di Data Control Language che include comandi come GRANT e riguarda
principalmente diritti, autorizzazioni e altri controlli del sistema di database.
CONCESSIONE: consente agli utenti di accedere ai privilegi del database
REVOKE: revoca agli utenti i privilegi di accesso forniti utilizzando il comando GRANT
TCL
TCL è un nome breve di Transaction Control Language che si occupa delle transazioni all'interno di
un database.
COMMIT: commette una transazione
ROLLBACK - rollback di una transazione in caso di errore
SAVEPOINT - per ripristinare i punti di transazione all'interno dei gruppi
SET TRANSACTION - specifica le caratteristiche per la transazione