
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Nella prima lezione installeremo l'edizione Express del database Sql Server e Sql Server Management Studio su un PC personale con sistema operativo Windows. Creeremo inoltre dei database d'esempio tramite il codice presente nel file in allegato alla lezione.
Vi ricordo di utilizzare sempre un PC personale per l'installazione di questo e qualsiasi altro software.
È sempre sconsigliato usare un PC aziendale senza la preventiva autorizzazione del reparto IT.
Per quanto l'SQL sia un linguaggio standardizzato e una grandissima parte dei temi trattati sarà applicabile anche su altri DBMS come Oracle, MySql e PostgreSQL, la sintassi descritta in questo corso sarà quella relativa al database Sql Server.
AGGIORNAMENTO: ho aggiunto anche gli script per creare i database su MySQL. Se avete installato SQL Server, potete ignorare il file.
Guarda questa lezione relativa all’errore “Catena di certificati emessa da una Autorità di certificazione non disponibile nell’elenco locale” ottenuto in fase di connessione
In questa lezione introduttiva creiamo un lessico di base dando una prima definizione teorica dei seguenti concetti
database;
database relazionale;
SQL;
RDBMS
In questa lezione inizieremo a muovere i primi passi con l'SQL scrivendo le prime query per visualizzare il contenuto delle tabelle.
Subito dopo impareremo a filtrare i dati. Per “filtrare” intendo visualizzare solo quella porzione di informazioni che rispetta particolari condizioni/caratteristiche.
Le parole chiave del linguaggio SQL che impareremo ad utilizzare in questa lezione sono SELECT - FROM - WHERE.
Continuiamo i temi della lezione precedente approfondendo le operazioni di filtro con l'SQL. In particolare studieremo
- l'operatore IN;
- il modo corretto di scrivere filtri su colonne di tipo date;
- la gestione dei NULL;
- l'operatore LIKE.
Dopo il filtro, la seconda attività più frequente nell'analisi dei dati è il raggruppamento/aggregazione. Vedremo cosa vuol dire raggruppare i dati e come farlo in modo efficiente con l'SQL.
Per far tutto ciò impareremo ad utilizzare la parola chiave GROUP BY.
Continuiamo i temi della lezione precedente approfondendo le operazioni di raggruppamento con l'SQL. In particolare studieremo
- le differenze tra COUNT(*), COUNT(<nome colonna>) e COUNT(DISTINCT <nome colonna>);
- come effettuare filtri post raggruppamento con l'HAVING;
- come combinare le istruzioni ORDER BY e TOP per estrarre particolari righe.
Tutti i problemi affrontati finora erano relativi ad informazioni contenute in una singola tabella.
Ma come dobbiamo comportarci se l'analisi richiede di combinare i dati presenti su tabelle differenti?
Impareremo a svolgere correttamente quest'attività tramite una nuova parola chiave dell'SQL: la famosissima JOIN.
In particolare analizzeremo nel dettaglio le differenze tra INNER JOIN e LEFT JOIN.
Continuiamo i temi della lezione precedente. In particolare studieremo
- filtri e raggruppamenti su tabelle combinate;
- la RIGHT JOIN E LA FULL JOIN;
- l'operatore UNION ALL
- gli operatori UNION, INTERSECT e EXCEPT
In questa lezione riflettiamo su alcuni modi errati di scrivere le JOIN che portano a combinare i dati delle tabelle nel modo sbagliato.
Spesso quando si programma da poco con l'SQL, si tende a voler risolvere qualsiasi tipo di problema scrivendo direttamente un'unica e complicatissima query.
In questa importantissima lezione vedremo invece un approccio totalmente diverso: scomporremo il problema in tanti sotto-problemi più semplici, ognuno risolvibile con una semplice query SQL, per poi integrare i risultati parziali al fine di ottenere l'analisi definitiva.
Ma come è possibile integrare i risultati di più query con l'SQL? Daremo a questa domanda ben tre risposte imparando ad utilizzare le SubQuery, le CTE (Common Table Expression) e le Tabelle Temporanee.
In questa lezione vedremo come utilizzare le SubQuery per filtrare i dati con condizioni che necessitano di combinare le informazioni presenti in più tabelle.
Vedremo in particolare come utilizzare le parole chiave DISTINCT, IN, EXISTS, NOT EXISTS combinate con le SubQuery e quali sono gli svantaggi della NOT IN.
In questa videolezione studiamo quattro possibili casi d'uso dell'utilissimo operatore CASE WHEN.
Applichiamo i concetti delle lezioni precedenti per vedere alcuni casi d'esempio di query che ci danno delle utili informazioni sulla distribuzione dei dati in una tabella.
In questa lezione studiamo un caso particolare di JOIN tra due tabelle che coinvolge la presenza di NULL.
Riscriviamo la query dell'esercizio precedente in altri tre modi equivalenti.
In questa lezione studieremo le Window Functions: dei nuovi, versatili e potenti costrutti per risolvere facilmente vari problemi comuni dell'analisi dei dati. Vedremo in particolare:
- le clausole OVER e PARTITION BY;
- un esempio con la funzione SUM;
- analogie e differenze tra RANK(), DENSE_RANK() e ROW_NUMBER()
In questa lezione riflettiamo sulle differenze tra l'ordine di scrittura delle clausole SQL e sull'ordine di valutazione per calcolare il risultato.
In questa lezione studiamo come inserire, aggiornare e cancellare i dati all'interno di un database relazionale tramite le parole chiave INSERT - UPDATE - DELETE. Si tratta di operazioni molto delicate in quanto modificano permanentemente i dati all'interno di un database. Vedremo come eseguirle in sicurezza testandone preliminarmente gli effetti tramite query di selezione.
In questa lezione impareremo a creare da zero un database relazionale, progettando le tabelle e alcune tipologie di vincoli applicabili ad esse:
- vincoli di tipo (int, decimal, varchar, ecc...);
- vincolo null/not null;
- chiave primaria.
Vedremo inoltre gli effetti della proprietà Identity su una colonna.
Continuiamo i temi della lezione precedente. In particolare studieremo:
- le possibili relazioni tra le tabelle (uno a uno, uno a molti, molti a uno, molti a molti);
- le modalità pratiche di implementazione delle varie relazioni;
- i vincoli di chiave esterna;
- i vincoli check.
Inseriamo un po' di dati nel database appena creato facendo attenzione all'ordine di inserimento e alla proprietà identity presente su alcune colonne.
Usiamo SQL Server Management Studio per inserire direttamente dei dati nelle tabelle. Riflettiamo sul legame tra chiave primaria e chiave esterna che deve essere presente nella condizione ON di una Join
Continuiamo i temi della lezione precedente analizzando l'import dei dati a partire dal contenuto di un file csv. Studieremo due modalità:
- l'import tramite procedura guidata di Sql Server Management Studio;
- l'import tramite codice SQL con l'istruzione BULK INSERT;
- le funzioni SUBSTRING, CHARINDEX e TRIM per trasformare i dati.
Studieremo inoltre i concetti di ETL (Extract, transform e load) e la differenza tra le operazioni di DROP e TRUNCATE di una tabella.
In questa lezione analizziamo il nome completo di una tabella su SQL Server e poniamo l'accento sul fatto che sia una buona pratica specificare sempre il nome della schema a cui la tabella appartiene.
Vedremo inoltre come creare uno schema e scrivere query che combinano dati di più database
In questa lezione introduciamo temi avanzati legati alla creazione di indici e all'analisi delle performance di una query tramite la lettura del piano d'esecuzione
In questa lezione impareremo a creare degli oggetti del database che permettono di salvare del codice SQL, per poi eseguirlo in un secondo momento. Vedremo in particolare:
- la creazione e l'interrogazione di viste per salvare il codice di una query di estrazione dei dati;
- la creazione e l'esecuzione di procedure per salvare qualsiasi tipo di codice.
In questa lezione vediamo le caratteristiche principali di un diagramma Entità-Relazioni ragionando sull'ambito di applicazione della progettazione concettuale e sulle convenzioni utilizzate nella sua rappresentazione.
In questo approfondimento teorico studiamo i vari step della progettazione di un Database.
Vediamo come tradurre le entità e gli attributi di un diagramma E-R in un database relazionale con SQL Server.
Traduciamo le relazioni di un diagramma E-R in un database relazionale con SQL Server. Ragioniamo infine sul passaggio da progettazione concettuale a progettazione logica.
In questa lezione approfondiamo la progettazione di un database in presenza di specializzazioni
In questa lezione svolgeremo degli esercizi. Il codice verrà creato "in diretta" durante l'esercizio per mostrare il ragionamento e il filo logico da seguire per scrivere una query SQL. Ci eserciteremo con i filtri, le join e i raggruppamenti. Introdurremo anche l'utile funzione CONCAT per unire il contenuto di più colonne.
Riprendiamo il contenuto della lezione precedente per esercitarci nella scrittura di query che coinvolgono tutte le principali istruzioni SQL: SELECT- FROM - JOIN - WHERE - GROUP BY- HAVING.
Utilizzeremo inoltre:
- la funzioni CONVERT per gestire il calcolo della media a partire da una colonna di tipo INT;
- la funzione COALESCE per modificare la visualizzazione di colonne contenenti dei NULL.
In questa lezione faremo degli esercizi su una nuova base dati. Studieremo l'importante funzione CASE WHEN e faremo degli esempi sul tipo di domande che uno sviluppatore deve porsi prima di scrivere le query, inerentemente i dati da interrogare.
Continuiamo la serie di esercizi sul database Gestionale utilizzando la nuova funzione DATEDIFF per calcolare la differenza tra date. Vedremo inoltre:
- un altro caso di utilizzo della CASE WHEN;
- l'utilissima funzione REPLACE;
- come scrivere in una sola query due JOIN tra tre tabelle.
Continuiamo la serie di esercizi sul database Gestionale utilizzando tra le altre le istruzioni EXISTS, NOT EXISTS, EXCEPT e la LEFT JOIN in contesti particolari.
In questa lezione risolviamo esercizi più complessi con l'uso delle CTE
Continuiamo l'esercitazione sulle CTE con altri tre esercizi. Studieremo inoltre un particolare utilizzo della funzione CASE WHEN che in alcuni casi permette di scrivere del codice più compatto e veloce.
Modifichiamo le tabelle presenti nel database CorsoSql inserendo tutti i vincoli necessari a garantire la qualità dei dati presenti. Discuteremo in particolare dei vincoli di tipo, NULL/NOT NULL, chiave primaria e chiave esterna.
Riprendiamo la lezione precedente discutendo l'importanza di scegliere correttamente i tipi da associare alle colonne di una tabella.
Approfondiamo l'utilizzo delle opzioni CASCADE, SET NULL e NO ACTION associate alla creazione di una chiave esterna
In questa lezione vediamo quali caratteristiche deve avere un database per essere "ben progettato" o, in altri termini, normalizzato.
Partiremo da un database contenente una serie di problemi e lo "normalizzeremo" step per step.
Ripasseremo le funzioni SUBSTRING e CHARINDEX e vedremo come eliminare le righe duplicate in una tabella combinando la DELETE con una CTE e una Window Function.
In questa lezione vediamo come scrivere del codice parametrico. Impareremo in particolare a
- dichiarare e usare variabili;
- creare viste parametriche (inline table value function);
- interrogare viste parametriche;
- utilizzare i costrutti cross apply e outer apply per passare una serie di valori ad una vista parametrica.
Connettiamoci a SQL Server tramite la libreria SQLAlchemy utilizzando l'autenticazione di Windows.
Approfondiamo i temi dell'autenticazione tramite nome utente, password e file di configurazione.
Importiamo i dati del file csv in una tabella di staging del Database
Carichiamo i dati dalla tabella di Staging ad una tabella target, riformattando i formati e applicando i vincoli di tipo, not null e chiave primaria.
Eseguiamo separatamente le analisi prima e dopo la data indicata e combiniamo i risultati tramite l'utilizzo di CTE.
Miglioriamo la soluzione precedente ripetendo le ripetizioni di codice e utilizzando in modo furbo la funzione CASE WHEN.
In questa lezione ti mostrerò come creare un portfolio di progetti di Analisi dei dati presentando il Project Work svolto in questa sezione, così potrai allegare il documento ottenuto al tuo curriculum o al tuo profilo di LinkedIn e Github!
Complimenti! Hai completato il Corso La guida completa al linguaggio SQL.
In questo video ti mostro La Scuola dei Dati, la mia piattaforma didattica in cui trovi tutti i temi di cui hai bisogno spiegati in un unico percorso completo, organico e strutturato, pensato per accompagnarti passo dopo passo. Costruisci oggi la tua carriera in Data Analysis e Intelligenza Artificiale, a soli 11€ al mese.
Visita il sito https://www.lascuoladeidati.it/
Applica il codice 68D7C in fase di registrazione per ottenere un 30% di sconto sul primo mese.
In questo corso di oltre 9 ore spiegherò da zero tutto il necessario per analizzare i dati di un database relazionale tramite il linguaggio SQL. Ho cercato di riportare in questi video tutti quei metodi didattici che ho affinato durante le mille e più ore di didattica live.
Partiremo imparando a scrivere le query SQL per interrogare un database. Vedremo in particolare le operazioni di filtro, raggruppamento, combinazione e trasformazione dei dati, tramite le note istruzioni SQL Select, From, Join, Where, Group By, Having e Order By. Dopo aver trattato temi più avanzati legati all'interrogazione dei dati, studieremo come creare da zero un database, creando le tabelle, i relativi vincoli e analizzando le istruzioni per aggiornare e popolare un database, anche a partire da file csv. Faremo inoltre un focus su temi legati alla progettazione e al diagramma E-R.
Il corso continua con una sezione completamente dedicata alle esercitazioni contenente più di due ore di esercizi guidati che seguono la modalità di insegnamento "Learn by doing". Ritengo che non ci sia modo migliore di imparare a programmare in un nuovo linguaggio se non programmandoci, seguendo dal vivo il docente in quello che è il flusso logico che porta alla scrittura del codice. Le esercitazioni sono utilizzate anche per introdurre in modo pratico svariate funzioni SQL (come CONCAT, COALESCE, REPLACE, DATEDIFF, eccetera) che andranno a completare le skill acquisite nelle prime sezioni più generali.
Nell'ultima sezione ho inserito un Project Work completo che ricalca alla perfezione un progetto reale di analisi dei dati con SQL. Infine nell'ultima lezione ti mostrerò un esempio di presentazione in Power Point che espone il Project Work svolto nel corso, così potrai iniziare a creare un Portfolio di Analisi dei dati e allegare il documento ottenuto al tuo curriculum e al tuo profilo di LinkedIn e Github!
Ho inserito infine un quiz finale con il quale potrai ripassare e verificare le competenze acquisite.
Utilizzeremo il database Sql Server Express Edition, che reputo il migliore da usare a fini didattici per la sua chiarezza, completezza e rigidità nella sintassi. Il software necessario è facilmente installabile su tutti i PC con sistema operativo Windows. Invece su Mac e Linux l'istallazione è meno immediata, richiede ad esempio l'utilizzo di Docker e non è trattata nel corso. Ovviamente vale sempre la raccomandazione di utilizzare un proprio PC personale (non aziendale) per installare questo e qualsiasi altro software.
COSA TROVI NEL CORSO:
- tutto quello che serve per imparare a scrivere query con le principali parole chiave di SQL: select, from, join, where, group by, having, order by;
- scrivere query complesse con cte e subquery;
- creare da zero un database creando tabelle con tutte le tipologie di vincoli: tipo, null/not null, chiave primaria, chiave esterna, check;
- popolare e aggiornare un database, anche tramite l'acquisizione di dati da file .csv;
- due ore di pura esercitazione con scrittura live del codice per mostrarti tutti i ragionamenti da fare per programmare correttamente in SQL;
- lezioni di approfondimento su temi più avanzati come il codice parametrico, le window function e la normalizzazione;
- risoluzione dettagliata e spiegata di un Project Work con il quale creare una presentazione che potrai allegare al tuo CV, Linkedin e Github
Le videolezioni sono corredate anche dai file contenenti gli script e gli esercizi visti durante le spiegazioni. Nel complesso, si tratta a tutti gli effetti di un manuale aggiuntivo di SQL. Inoltre sarò sempre disponibile a rispondere a dubbi e domande sul materiale del corso, che potrai porre tramite i messaggi di Udemy o l'apposita sezione di Domande & Risposte.