SQL Server — Programmation T-SQL : requêtes, objets et optimisation
Version du programme : 1
Type de formation
PrésentielDurée de formation
21 heures (3 jours)SQL Server — Programmation T-SQL : requêtes, objets et optimisation
Objectif de formation : Permettre aux participants de maîtriser le langage T-SQL pour interroger, manipuler et structurer les données d'une base SQL Server — en concevant des requêtes avancées, des procédures stockées, des fonctions, des déclencheurs et des vues — afin d'écrire un code T-SQL robuste, performant et maintenable en environnement professionnel. Un schéma de base de données métier fil rouge est utilisé tout au long de la formation — commandes, clients, produits, stocks — permettant à chaque participant de construire progressivement un ensemble cohérent de requêtes et d'objets T-SQL directement réutilisables.
Objectifs de la formation
- Maîtriser les requêtes T-SQL avancées : jointures, sous-requêtes, fonctions analytiques, CTE
- Manipuler les données avec INSERT, UPDATE, DELETE et MERGE
- Créer et exploiter les objets de la base : vues, fonctions scalaires et table, procédures stockées
- Implémenter des déclencheurs (triggers) pour automatiser les traitements
- Gérer les transactions et les erreurs avec TRY/CATCH
- Analyser et optimiser les performances des requêtes avec les plans d'exécution
- Comprendre et exploiter les index pour améliorer les temps de réponse
- Appliquer les bonnes pratiques de sécurité et de maintenabilité du code T-SQL
Profil des bénéficiaires
- Développeurs souhaitant maîtriser la programmation T-SQL sous SQL Server
- Analystes et développeurs BI amenés à écrire des requêtes complexes et des procédures de traitement
- Administrateurs de bases de données souhaitant renforcer leurs compétences en développement T-SQL
- Chefs de projet techniques supervisant des développements SQL Server
- Connaissance des concepts fondamentaux des bases de données relationnelles
- Notions de base en SQL : SELECT, WHERE, jointures simples
- Aucune connaissance préalable de T-SQL requise
Contenu de la formation
Module 1 — Environnement et fondamentaux T-SQL (2h)
- Architecture SQL Server : moteur de base de données, SSMS, bases système et utilisateur
- Types de données T-SQL : numériques, chaînes (VARCHAR, NVARCHAR), dates, binaires — choisir le bon type
- Valeurs NULL : comportement, gestion avec ISNULL, COALESCE, NULLIF
- Opérateurs et fonctions intégrées : fonctions de chaîne, de date, mathématiques
- Conversion de types : CAST, CONVERT, TRY_CAST, TRY_CONVERT
- Création et modification de tables : CREATE TABLE, ALTER TABLE, contraintes (PK, FK, UNIQUE, CHECK, DEFAULT)
- Prise en main de SSMS : éditeur de requêtes, explorateur d'objets, exécution et résultats
- Travaux pratiques : création du schéma fil rouge (tables Clients, Produits, Commandes, Lignes_Commandes), insertion des données de référence, exploration de l'environnement SSMS
Module 2 — Requêtes avancées et manipulation des données (4h)
- Rappels SELECT : filtrage WHERE, tri ORDER BY, alias, DISTINCT
- Jointures avancées : INNER JOIN, LEFT/RIGHT/FULL OUTER JOIN, CROSS JOIN, self-join — choisir selon le besoin
- Sous-requêtes : corrélées, non corrélées, dans SELECT/FROM/WHERE, EXISTS vs IN
- Agrégation avancée : GROUP BY, HAVING, GROUPING SETS, ROLLUP, CUBE
- Fonctions de fenêtrage (Window Functions) : ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE
- Expressions de table communes (CTE) : WITH, CTE récursives pour hiérarchies et structures arborescentes
- Requêtes combinées : UNION, UNION ALL, INTERSECT, EXCEPT
- Manipulation des données : INSERT (simple, multi-lignes, INSERT INTO SELECT), UPDATE avec jointure, DELETE, TRUNCATE
- L'instruction MERGE : synchronisation de tables source/cible en une seule commande
- Travaux pratiques : écriture d'une série de requêtes analytiques sur le fil rouge — top 10 clients par chiffre d'affaires avec ROW_NUMBER, calcul de la variation mensuelle des ventes avec LAG, extraction de la hiérarchie des catégories produits avec CTE récursive, synchronisation d'une table de stock avec MERGE
Module 3 — Vues et programmation structurée T-SQL (3h)
- Vues (Views) : création, modification, suppression — cas d'usage, sécurité et limites
- Vues indexées (Materialized Views) : principes et conditions d'utilisation
- Variables T-SQL : DECLARE, SET, SELECT, portée et durée de vie
- Structures de contrôle : IF/ELSE, CASE (expression et recherché), WHILE, BREAK, CONTINUE
- Traitement par lots (Batches) et instruction GO
- Tables temporaires : locales , globales et variables de table (table) — différences et cas d'usage
- SQL dynamique : EXEC et sp_executesql — construction et exécution de requêtes dynamiques, injection SQL et protection
- Travaux pratiques : création des vues métier du fil rouge (vue commandes en cours, vue performance commerciale par région), écriture de scripts T-SQL structurés avec variables et structures de contrôle, premier script de SQL dynamique sécurisé
Module 4 — Procédures stockées et fonctions (4h)
- Procédures stockées : principes, avantages (performance, sécurité, maintenabilité), création avec CREATE PROCEDURE
- Paramètres d'entrée, paramètres de sortie (OUTPUT), valeurs par défaut
- Procédures stockées système : sp_help, sp_depends, sp_who2 — explorer les métadonnées
- Recompilation et plan d'exécution : WITH RECOMPILE, OPTION(RECOMPILE)
- Fonctions scalaires (Scalar Functions) : retournent une valeur unique — CREATE FUNCTION
- Fonctions table (Table-Valued Functions) : inline (TVF) et multi-instructions (MTVF) — quand utiliser laquelle
- Bonnes pratiques : nommage, commentaires, gestion des paramètres optionnels, éviter les anti-patterns (fonctions scalaires sur grandes tables)
- SET NOCOUNT ON et autres options d'optimisation des objets
- Travaux pratiques : développement d'un ensemble cohérent de procédures et fonctions sur le fil rouge — procédure de création de commande avec paramètres et valeurs de retour, fonction scalaire de calcul de remise, TVF des commandes d'un client sur une période
Module 5 — Gestion des erreurs, transactions et déclencheurs (4h)
- Transactions : BEGIN TRANSACTION, COMMIT, ROLLBACK — garantir l'intégrité des données
- Transactions imbriquées et SAVE TRANSACTION : points de sauvegarde
- Niveaux d'isolation des transactions : READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE, SNAPSHOT
- Gestion des erreurs avec TRY/CATCH : structure, variables ERROR, ERROR_MESSAGE(), ERROR_NUMBER(), ERROR_LINE()
- THROW vs RAISERROR : différences et bonnes pratiques 2026
- Déclencheurs DML (Triggers) : AFTER et INSTEAD OF — CREATE TRIGGER, tables virtuelles INSERTED et DELETED
- Déclencheurs DDL : surveiller les modifications de structure de la base
- Bonnes pratiques triggers : quand les utiliser, pièges courants (performance, récursivité, ordre d'exécution)
- Débogage T-SQL dans SSMS : breakpoints, pas à pas, inspection des variables
- Travaux pratiques : implémentation d'un trigger d'audit complet sur le fil rouge (journal des modifications de prix), gestion transactionnelle d'une procédure de passation de commande avec TRY/CATCH et ROLLBACK automatique en cas d'erreur
Module 6 — Index, performances et optimisation (4h)
- Structure des index SQL Server : index cluster (clustered) vs non cluster (non-clustered), index couvrant (covering)
- Choisir sa stratégie d'indexation : analyse des requêtes fréquentes, colonnes candidates
- Index filtrés et index sur colonnes calculées : cas d'usage
- Plans d'exécution : lecture et interprétation dans SSMS (Estimated vs Actual Execution Plan)
- Opérateurs coûteux à identifier : Table Scan, Index Scan vs Index Seek, Key Lookup, Hash Join vs Nested Loops
- Statistiques SQL Server : leur rôle, mise à jour, impact sur les plans d'exécution
- Vues de gestion dynamique (DMV) pour l'analyse des performances : sys.dm_exec_query_stats, sys.dm_exec_requests, sys.dm_db_missing_index_details
- Conseils d'optimisation pratiques : réécriture de requêtes, SARGabilité, éviter les fonctions dans les clauses WHERE
- Maintenance des index : fragmentation, REBUILD vs REORGANIZE
- Travaux pratiques : session d'optimisation sur le fil rouge — identification des requêtes lentes avec les DMV, lecture et comparaison de plans d'exécution avant/après indexation, mesure des gains avec SET STATISTICS TIME/IO