Il corso “SQL Server: sviluppo e programmazione con T-SQL” è rivolto a persone che posseggono già delle competenze sul linguaggio SQL o sul Database SQL Server e che vogliono incrementare notevolmente le proprie conoscenze nella scrittura di query efficienti, nell’interrogazione, nella progettazione e nella programmazione di un database tramite il linguaggio Transact-SQL.
Imparerai a programmare con tutti i costrutti avanzati di T-SQL come le Windows function, la Cross apply e le viste parametriche. Ti insegnerò a espandere le potenzialità delle operazioni DML tramite la clausola Output e le Temporal Table, o a effettuare performanti raggruppamenti multi-livello con i costrutti Cube, Grouping sets e Rollup della Group by. Renderemo insieme il tuo modo di scrivere le query più breve, veloce, chiaro e performante.
Dedicheremo molta attenzione a come raggruppare il codice in stored procedure efficienti che includano parametri di input e di output, gestione degli errori, delle transazioni e dei diritti di esecuzione, pronte per essere eseguite in automatico tutti i giorni. Con questa nuova ottica ti occuperai di “programmazione di un database” e non più della singola scrittura di query isolate.
Sempre più spesso dovrai interfacciarti con dati in formato Json e per questo è fondamentale che tu sappia integrarli, interrogarli ed esporli anche all’interno di un database relazionale come Sql Server. Le Temporal table sono state un’innovazione troppo importante e performante per non usarle attivamente per risolvere tutti gli annosi problemi riguardanti il log delle tabelle e la gestione delle modifiche dei dati di anagrafica. Vedremo come misurare concretamente le performance delle tue nuove query, imparando a leggere i piani di esecuzioni e comprendendo i principi con cui il motore interno del database esegue le query.
Il programma del corso “SQL Server: sviluppo e programmazione con T-SQL”
Ho diviso il programma in tre sottosezioni.
Riepilogo delle strutture di base dell’SQL e introduzione ai piani di esecuzione
Inizieremo con un riepilogo veloce delle strutture di base dell’SQL per assicurarci che tutti gli argomenti propedeutici a quelli avanzati siano chiari. Coglieremo l’occasione per ripassare gli operatori insiemistici Union, Union All, Intersect ed Except prestando attenzione alle relative performance e al modo di gestire i valori nulli e duplicati. Analizzeremo dal punto di vista delle performance i vari algoritmi per confrontare i dati tra più tabelle comparando ad esempio i costrutti Left Join, Not Exists, Not In ed Except. Per far questo valuteremo i piani di esecuzioni delle query comprendendo le cause alla base delle differenze di performance tra due query simili.
Continueremo questa parte introduttiva ricordando le funzioni T-SQL più utili per manipolare stringhe e date. Vedremo ad esempio come la funzione Try_convert può risolvere in molti casi gli annosi problemi di conversione e superare l’utilizzo non sempre chiarissimo di IsNumeric. Dai un’occhiata a questa foto o leggi l’articolo a riguardo di Brent Ozar https://www.brentozar.com/archive/2018/02/fifteen-things-hate-isnumeric/.

Istruzioni avanzate di Transact-SQL
A questo punto possiamo entrare nel vivo e presentare nuovi costrutti utilissimi per scrivere query più efficienti e compatte. Partiremo dalle Window Functions, uno strumento importantissimo per migliorare il nostro SQL soprattutto per tematiche legate alla data analysis e al reporting.
“Estrarre per ogni cliente la sua fattura più recente”
Se stai pensando di risolvere l’esercizio in questo modo
SELECT F.* FROM Fatture AS F INNER JOIN (SELECT IdCliente, MAX(DataFattura) AS DataUltimaFattura FROM Fatture GROUP BY IdCliente) AS U ON F.IdCliente = U.IdCliente AND F.DataFattura = U.DataUltimaFattura
con una sottoquery che esegui una group by più una join, vuol dire sicuramente che hai una buona conoscenza dell’SQL, ma ignori purtroppo l’esistenza delle window function, che ti permetterebbero di scrivere un codice ad hoc più leggero e performante, oltre a gestire con totale libertà il caso in cui a un cliente siano state registrate due fatture nello stesso giorno.
Dedicheremo una buona porzione di tempo alle window function con il T-SQL perché gli ambiti di utilizzo sono davvero tanti. Ma ci saranno anche tanti, nuovi e utili costrutti da studiare:
- le clausole di Output che permettono di gestire facilmente attività di log successive a operazioni di aggiornamento delle tabelle;
- come e quando utilizzare subquery, Cte (anche ricorsive), tabelle temporanee, variabili-tabella e viste per rispondere a domande complesse non con query complesse e incomprensibili, ma concatenando tante piccole e performanti query più semplici;
- i costrutti Grouping Sets, Rollup e Cube per potenziare le operazioni di aggregazione dei dati;
- effettuare Pivot e Unpivot dei dati;
- manipolare dati in formato JSON tramite la sintassi SQL;
- creare e interrogare Temporal Table.
Creare e gestire Store Procedure con T-SQL, gestione degli errori e delle transazioni
Mancheranno a questo punto gli ultimi tasselli per imparare a scrivere il miglior codice SQL possibile. Dobbiamo studiare come:
- parametrizzare il nostro codice utilizzando delle variabili;
- gestire gli errori tramite i blocchi Try/Catch;
- gestire le transazioni con le istruzioni Begin Tran, Commit e Rollback;
- combinare i tre punti precedenti per incapsulare il nostro codice in Stored Procedure efficienti e automatizzate.
Vedremo infine come creare viste parametriche (note tecnicamente come Inline Table-Valued Function). Anche se in generale non hanno la stessa flessibilità delle stored procedure in quanto non permettono operazioni DML, le viste parametriche possono risultare estremamente utili se utilizzate in sinergia con i costrutti OUTER e CROSS APPLY per interrogare i dati all’interno del database.
Un esempio di cosa imparerai: le transazioni
Informazioni generali e corsi correlati
Modalità di erogazione: in diretta streaming con software di videoconferenza
Durata edizione one-to-one (lezioni ristrette a un solo partecipante): consiglio un minimo di 16 ore, da rivalutare in base ai propri obiettivi didattici
Costo edizione one-to-one (lezioni ristrette a un solo partecipante): 800€ per un corso di 16 ore. Nel prezzo è compreso in omaggio anche il Video-corso completo di Data Analysis, composto da 50+ ore di video lezione su 9 aree formative, 5 guide step by step alla creazione di un portfolio di analisi dei dati e vari progetti da svolgere in autonomia su cui ricevere feedback personalizzati.
Durata edizione aziendale (lezioni per partecipanti della stessa azienda): da definire in una call in base al numero di partecipanti e alle esigenze didattiche
Costo edizione aziendale (lezioni per partecipanti della stessa azienda): 60€/h
Data di partenza del corso: entro un mese circa dalla richiesta
Calendario: concordato con lo studente o l’azienda
Possibilità di registrare le lezioni per uso didattico: sì
Prerequisiti: è necessaria una buona conoscenza delle basi del linguaggio SQL. Se non hai esperienza sulla materia guarda la scheda del corso introduttivo a SQL e ai database relazionali. Se invece sei già esperto su questi argomenti e ti interessa un corso concentrato sulle performance e tematiche avanzate di SQL Server, guarda il programma del corso avanzato su Sql Server.
Tutti i prezzi di questa pagina sono esenti iva (iva allo 0%) in quanto erogati nell’ambito del regime fiscale forfettario.