corso t-sql su Sql Server

Corso SQL Server: sviluppo e programmazione con T-SQL

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ò ad espandere le potenzialità delle operazioni DML tramite la clausola Output e le Temporal Table, o ad 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 a 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 (in questo mio articolo trovi delle informazioni a riguardo) 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 (in questo articolo parlo delle novità disponibili da Sql Server 2017). 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/.

esempio di utilizzo su Sql Server della funzione 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.  A questa domanda posta su Quora su come valutare la competenza di uno sviluppatore SQL, ho proposto di porre allo sviluppatore questo esercizio:

“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 functions, che ti permetterebbero di scrivere un codice ad hoc più leggero e performante, oltre a gestire con totale libertà il caso in cui ad un cliente siano state registrate due fatture nello stesso giorno.

Dedicheremo una buona porzione di tempo alle window functions 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 ad operazioni di aggiornamento delle tabelle (https://docs.microsoft.com/it-it/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-ver15); 
  • 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 (leggi questo articolo di Pinal Dave sui vantaggi relativo all’uso delle Stored Procedure).

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.

 

Informazioni generali e corsi correlati

In questa pagina trovi tutte le informazioni su prezzi, durata, modalità di erogazione e materiali dei miei corsi.

Prerequisito del corso è una buona conoscenza delle basi del linguaggio SQL. Se non hai esperienza sulla materia puoi guardare la scheda del corso introduttivo all’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, ti proponiamo il programma del corso avanzato su Sql Server.

 

Un esempio di cosa imparerai: le transazioni

 

Alcune recensioni dei miei studenti

Nicola è un gran formatore, metta la sua competenza al servizio delle persone cercando sempre la migliore soluzione e scalando il lavoro sulle esigenze formative. È attento e aiuta a comprendere e a crescere. Lavorare con lui è sempre un piacere ed uno stimolo a migliorarsi.

Enzo La Rosa
01/09/20

Nicola è stato un insegnate fantastico Nicola è stato un insegnate fantastico, mi ha aiutato a finire la tesi spiegandomi degli argomenti fondamentali e fornendomi tutti gli strumenti per ultimarla nel migliore dei modi. Lo consiglio al 100%.

Giulia Casti
07/07/20
Torna su