Scheda di revisione: Introduction aux bases de données SQL Server

📋 Plan du Cours

  1. Outils SQL Server
  2. Bases de données
  3. Types de bases
  4. Création de tables
  5. Requêtes SELECT
  6. Fonctions SQL
  7. Jointures
  8. Fonctions analytiques
  9. Procédures stockées
  10. Déclencheurs
  11. Fonctions utilisateur
  12. Gestion des transactions

📖 1. Outils SQL Server

🔑 Notions clés & Définitions

  • Moteur de base de données : Composant central de SQL Server chargé de stocker, traiter et sécuriser les données. Il gère à la fois les opérations transactionnelles (OLTP) et analytiques (OLAP). Selon SANCHEZ (support), il permet de répondre aux requêtes des applications clientes tout en assurant la cohérence et la sécurité des données.

  • Analysis Services : Module de SQL Server dédié à la gestion des données multidimensionnelles et agrégées. Il permet de créer des structures complexes, telles que des cubes, pour analyser des données par domaine ou thème, facilitant ainsi la prise de décision (voir support).

  • Integration Services : Plateforme ETL (Extraction, Transformation, Chargement) intégrée à SQL Server. Elle facilite la création de solutions d’intégration de données pour alimenter un Data Warehouse, en automatisant les processus d’extraction, de transformation et de chargement des données (voir support).

  • Reporting Services : Composant Web de SQL Server permettant de concevoir, déployer et gérer des rapports d’entreprise. Il offre une interface pour la création de rapports interactifs, exploitables via un navigateur web, pour une visualisation efficace des données (voir support).

📝 Points essentiels

  • Le moteur de base de données est la pierre angulaire de SQL Server, assurant le stockage sécurisé et la gestion des transactions en temps réel pour les bases OLTP, tout en supportant l’analyse de données via OLAP. Il gère plusieurs bases système : msdb (planification, alertes), master (données système), model (modèle pour nouvelles bases), et tempdb (ressource globale pour opérations temporaires).

  • Analysis Services permet la création de structures multidimensionnelles, telles que des cubes, qui contiennent des données agrégées provenant de sources diverses, facilitant l’analyse thématique et la synthèse pour le décideur.

  • Integration Services offre une plateforme robuste pour automatiser l’intégration de données, essentielle pour la maintenance et la mise à jour régulière du Data Warehouse, en utilisant des processus ETL.

  • Reporting Services fournit une interface web pour la création et la diffusion de rapports, permettant aux utilisateurs d’accéder à des informations consolidées et visuellement exploitables, favorisant la prise de décision.

  • La gestion des bases de données dans SQL Server repose sur plusieurs fichiers : primaire (données de démarrage), secondaire (données utilisateur réparties sur plusieurs disques), et journal des transactions (pour la restauration et la cohérence).

💡 À retenir

SQL Server combine un moteur de base de données puissant avec des modules spécialisés (Analysis, Integration, Reporting) pour couvrir l’ensemble des besoins en stockage, traitement, analyse et présentation des données, assurant ainsi une gestion intégrée et sécurisée.

📖 2. Bases de données

🔑 Notions clés & Définitions

  • MSDB : Base de données système utilisée par l'Agent SQL Server pour planifier des alertes, des travaux, et gérer des fonctionnalités telles que Service Broker et la messagerie de base de données.
  • MASTER : Contient l’intégralité des informations système relatives à une instance SQL Server, notamment la configuration, les connexions, et les objets globaux.
  • MODEL : Sert de modèle pour toutes les bases de données créées sur une instance de SQL Server, permettant d'appliquer une structure ou des paramètres par défaut.
  • TEMPDB : Base de données système accessible globalement, utilisée comme conteneur pour la création temporaire d’objets (tables, variables, etc.) et pour stocker des résultats intermédiaires.
  • Fichiers de base de données :
    • Primaire : Contient les informations de démarrage de la base, et peut stocker objets et données utilisateur.
    • Secondaire : Fichiers facultatifs pour répartir les données sur plusieurs disques ou pour permettre la croissance de la base.
    • Journal des transactions : Enregistre toutes les opérations pour assurer la cohérence et permettre la restauration ; extension recommandée en .ldf.
  • Rôle de SQL Server : SGBDR (Système de Gestion de Base de Données Relationnelle) permettant de gérer le stockage, le traitement, la sécurisation des données, ainsi que leur analyse via OLTP (transactionnel) et OLAP (analytique) (voir section 3).

📝 Points essentiels

  • Bases de données système :
    • msdb : gestion des tâches planifiées, alertes, Service Broker, messagerie.
    • master : informations système, configuration globale.
    • model : modèle pour la création de nouvelles bases, avec paramètres par défaut.
    • tempdb : stockage temporaire, accessible à tous, utilisé pour la création d’objets temporaires et le traitement intermédiaire.
  • Fichiers de base :
    • La fichier primaire est obligatoire, il contient les métadonnées et objets initiaux.
    • Les fichiers secondaires permettent la croissance et la répartition sur plusieurs disques.
    • Le journal en .ldf assure la cohérence et la récupération en cas de panne.
  • Rôle de SQL Server : Il agit comme SGBDR pour gérer efficacement les données transactionnelles (OLTP) et analytiques (OLAP), en utilisant notamment les bases de données comme msdb, master, model et tempdb pour orchestrer ces processus (voir support de cours).
  • Fichiers de base :
    • La taille et la répartition sur plusieurs disques sont cruciales pour la performance et la croissance.
    • La journalisation permet la restauration point par point et la cohérence des données.

💡 À retenir

Les bases de données système de SQL Server (msdb, master, model, tempdb) jouent un rôle fondamental dans la gestion, la configuration, et la performance de l’environnement, en assurant la stabilité, la sécurité, et la disponibilité des données.

📖 3. Types de bases

🔑 Notions clés & Définitions

  • Bases OLTP (On-Line Transactional Processing) : traitement transactionnel en temps réel, utilisant des tables relationnelles pour gérer efficacement un grand nombre de transactions simultanées. Selon SANCHEZ (support SQL Server), elles sont conçues pour assurer la rapidité et la fiabilité des opérations de mise à jour, insertion ou suppression dans des bases de données organisées en tables relationnelles.

  • Bases OLAP (On-Line Analytical Processing) : organisation des données par domaine ou thème pour l’analyse multidimensionnelle. SANCHEZ (support SQL Server) précise qu’elles permettent de créer des structures multidimensionnelles contenant des données agrégées, facilitant la prise de décision stratégique.

  • Différences fonctionnelles entre OLTP et OLAP : selon SANCHEZ (support SQL Server), OLTP se concentre sur la gestion efficace des transactions en temps réel avec des tables relationnelles, tandis qu’OLAP vise à analyser des données agrégées via des structures multidimensionnelles pour fournir des résultats pertinents pour le décideur.

📝 Points essentiels

  • OLTP est utilisé pour le traitement en temps réel, avec une forte exigence de rapidité et de cohérence dans les opérations de mise à jour, stockage et récupération de données. Les tables relationnelles sont organisées pour minimiser la redondance et maximiser la vitesse des transactions.

  • OLAP organise les données par domaine ou thème, permettant une analyse multidimensionnelle. Les structures comme les cubes de données contiennent des données agrégées, facilitant la synthèse et la visualisation pour l’aide à la décision.

  • SQL Server gère ces deux types de bases : OLTP via ses tables relationnelles pour le traitement transactionnel, et OLAP via Analysis Services pour l’analyse multidimensionnelle.

  • Bases de données système : SANCHEZ (support SQL Server) mentionne des bases comme msdb, master, model et tempdb qui jouent un rôle dans la gestion et le fonctionnement des bases OLTP et OLAP.

  • La différence principale réside dans l’organisation des données : relationnelle pour OLTP, multidimensionnelle pour OLAP, chaque type étant optimisé pour ses usages spécifiques.

💡 À retenir

Les bases OLTP sont conçues pour le traitement en temps réel des transactions avec des tables relationnelles, tandis que les bases OLAP sont orientées vers l’analyse multidimensionnelle des données par domaine ou thème, répondant à des besoins décisionnels.

📖 4. Création de tables

🔑 Notions clés & Définitions

  • PRIMARY KEY : Contrainte qui identifie de manière unique chaque enregistrement d'une table. Elle ne peut contenir de valeurs NULL et doit être unique pour chaque ligne. AUTEUR (date) : La clé primaire garantit l’unicité des lignes dans une table, facilitant la recherche et l’intégrité des données.

  • CHECK : Contrainte qui limite les valeurs possibles d’une colonne selon une condition logique. Elle permet d’assurer la cohérence des données insérées ou modifiées. AUTEUR (date) : La contrainte CHECK vérifie que les données respectent certains critères, renforçant l’intégrité référentielle.

  • UNIQUE : Contraintes qui garantissent que toutes les valeurs d’une colonne ou d’un groupe de colonnes soient distinctes dans la table. Elle autorise NULL sauf si précisé autrement. AUTEUR (date) : La contrainte UNIQUE évite la duplication de valeurs dans une colonne, sauf pour NULL.

  • FOREIGN KEY : Clé étrangère qui établit une relation entre deux tables en faisant référence à la clé primaire d’une autre table. Elle assure l’intégrité référentielle. AUTEUR (date) : La foreign key permet de maintenir la cohérence entre les données liées dans différentes tables.

  • Colonnes calculées : Champs dont la valeur est déterminée par une expression ou une formule basée sur d’autres colonnes. Elles ne stockent pas directement les données mais sont calculées à la volée. AUTEUR (date) : Les colonnes calculées facilitent la gestion des données dérivées sans duplication.

📝 Points essentiels

  • La création d’une table se fait via la commande CREATE TABLE, en précisant les colonnes, leur type, et éventuellement des contraintes (PRIMARY KEY, CHECK, UNIQUE, FOREIGN KEY). Exemple :

    CREATE TABLE Client (
      IdClient INT PRIMARY KEY IDENTITY,
      Civilite CHAR(8) CONSTRAINT CK_Civilite CHECK(UPPER(Civilite) IN ('M', 'MME', 'MLLE', 'M ET MME')),
      Nom VARCHAR(25) NOT NULL,
      NoSS VARCHAR(13) UNIQUE,
      EnCoursTTC AS (EnCoursHT * 1.196),
      Modif ROWVERSION,
      DatePremiereVisite SMALLDATETIME NOT NULL,
      DatePremiereCommande SMALLDATETIME NULL
    );
    
  • La modification d’une table existante pour ajouter ou modifier des contraintes se fait via ALTER TABLE. Exemple :

    ALTER TABLE Client WITH CHECK ADD CONSTRAINT CK_DateVite CHECK (DatePremiereCommande >= DatePremiereVisite);
    
  • La gestion des clés primaires, étrangères, et contraintes de vérification permet d’assurer la cohérence et l’intégrité des données dans la base.

  • La création de types personnalisés (ex : pour le téléphone) se fait via CREATE TYPE, facilitant la standardisation des formats.

  • Les colonnes calculées permettent d’éviter la duplication de logique métier dans la base, en calculant dynamiquement des valeurs à partir d’autres colonnes.

💡 À retenir

La création de tables en SQL Server repose sur la définition précise des colonnes, types, et contraintes pour garantir l’intégrité et la cohérence des données. Les contraintes telles que PRIMARY KEY, CHECK, UNIQUE et FOREIGN KEY sont essentielles pour assurer la qualité des données et leur relation dans la base.

📖 5. Requêtes SELECT

🔑 Notions clés & Définitions

  • Clause FROM : Partie de la requête SQL qui spécifie la ou les tables ou vues à partir desquelles extraire les données. Elle indique la source des données pour la requête.
  • Clause WHERE : Partie de la requête SQL permettant de filtrer les lignes en fonction de critères précis. Elle limite les résultats en ne conservant que ceux qui satisfont les conditions spécifiées.
  • Critère NULL : Condition utilisée pour tester si une colonne ne contient pas de valeur (NULL). Par exemple, WHERE ProductNumber IS NULL permet de sélectionner les produits sans numéro.
  • Critère IN : Permet de filtrer les résultats en vérifiant si une valeur appartient à une liste donnée. Exemple : WHERE Country IN ('Mexico', 'Canada', 'USA').
  • Champs calculés dans SELECT : Expression définie dans la clause SELECT qui effectue un calcul ou une concaténation sur des colonnes existantes, par exemple qty * unitprice AS Total.
  • Filtres complexes (exemples) : Combinaison de plusieurs critères avec AND, OR, BETWEEN, LIKE pour affiner la sélection. Exemple : WHERE (COLOR='RED' OR COLOR='BLACK') AND ProductNumber LIKE 'FR%'.

📝 Points essentiels

  • La clause FROM détermine la ou les sources de données pour la requête, pouvant inclure plusieurs tables via jointures ou sous-requêtes.
  • La clause WHERE sert à filtrer les résultats en utilisant des opérateurs logiques (AND, OR), des opérateurs de comparaison (BETWEEN, LIKE, IN), ou la vérification de NULL (IS NULL, IS NOT NULL).
  • L’utilisation de critères NULL permet de gérer les valeurs absentes ou indéfinies dans une colonne, essentielle pour éviter des erreurs ou pour cibler des cas spécifiques.
  • La clause IN simplifie la sélection parmi plusieurs valeurs possibles, évitant l’utilisation répétée de conditions OR.
  • Les champs calculés dans SELECT permettent d’effectuer des opérations sur des colonnes, comme des multiplications, des concaténations ou des transformations, pour enrichir le résultat sans modifier la structure de la base.
  • Les filtres complexes combinent plusieurs critères pour cibler précisément les données, par exemple avec AND, OR, BETWEEN, LIKE, IN, pour répondre à des besoins analytiques ou de reporting.

💡 À retenir

Les requêtes SELECT utilisent principalement les clauses FROM et WHERE pour extraire et filtrer efficacement les données selon des critères précis, notamment avec des filtres complexes et champs calculés, indispensables pour analyser ou manipuler les données dans SQL Server.

📖 6. Fonctions SQL

🔑 Notions clés & Définitions

  • COUNT (Système de gestion de base de données relationnelle, SANCHEZ, 2023) : Fonction d’agrégat qui dénombre le nombre de lignes ou d’expressions non nulles dans un ensemble de résultats.
  • SUM (SANCHEZ, 2023) : Fonction d’agrégat qui calcule la somme de toutes les valeurs non nulles d’une expression dans un groupe.
  • ABS (Fonction mathématique, SANCHEZ, 2023) : Renvoie la valeur absolue d’un nombre, c’est-à-dire sa valeur sans signe.
  • GETDATE (Fonction de date, SANCHEZ, 2023) : Renvoie la date et l’heure système courantes du serveur SQL.
  • CHARINDEX (Fonction de chaîne, SANCHEZ, 2023) : Localise la position de la première occurrence d’une chaîne dans une autre, en renvoyant l’indice de départ.
  • RANK (Fonctions de classement, SANCHEZ, 2023) : Fonction qui attribue un rang à chaque ligne d’un résultat, en tenant compte des valeurs identiques, en laissant des écarts dans la numérotation.

📝 Points essentiels

Les fonctions SQL permettent d’effectuer des opérations variées sur les données : calculs, transformations, analyses, etc.

  • Les fonctions d’agrégat telles que COUNT, SUM, AVG, MIN, MAX sont essentielles pour résumer et analyser des ensembles de données. Par exemple, COUNT dénombre les lignes, tandis que SUM additionne des valeurs numériques.
  • Les fonctions mathématiques comme ABS, CEILING, FLOOR, SIGN, SQRT, POWER, SQUARE facilitent les calculs numériques, notamment pour gérer les valeurs absolues, arrondir ou élever à une puissance.
  • Les fonctions trigonométriques (SIN, COS, TAN, ACOS, ASIN, ATAN) permettent de réaliser des calculs liés à la géométrie ou à la trigonométrie.
  • Les fonctions logarithmiques telles que EXP, LOG, LOG10 sont utilisées pour des opérations sur des échelles logarithmiques ou exponentielles.
  • Les fonctions de dates comme GETDATE, DATENAME, DATEPART, DATEDIFF, DATEADD, DAY, MONTH, YEAR permettent de manipuler, extraire ou calculer des intervalles temporels.
  • Les fonctions de chaîne de caractères (ASCII, UNICODE, CHARINDEX, LTRIM, RTRIM, REPLACE, LEN, SOUNDEX) facilitent la manipulation et l’analyse de textes : localisation, nettoyage, conversion ou phonétique.
  • La fonction SOUNDEX est utilisée pour comparer la similarité phonétique entre mots, utile pour la recherche approximative.
  • La fonction CAST ou CONVERT permet de changer le type de données d’une valeur, notamment pour la compatibilité ou la précision.
  • Les fonctions de classement comme ROW_NUMBER, RANK, DENSE_RANK permettent d’attribuer un rang ou un numéro à chaque ligne selon un ordre défini, souvent dans des analyses ou des tris avancés.

💡 À retenir

Les fonctions SQL sont indispensables pour transformer, analyser et résumer efficacement les données, en combinant opérations mathématiques, textuelles, temporelles et de classement pour répondre à des besoins variés en gestion et reporting.

📖 7. Jointures

🔑 Notions clés & Définitions

  • Jointure (JOIN) : Opération permettant de combiner et d’afficher des données provenant de plusieurs tables en associant leurs colonnes liées selon une condition spécifique.
  • INNER JOIN : Jointure qui ne retourne que les lignes ayant une correspondance dans les deux tables.
  • LEFT JOIN : Retourne toutes les lignes de la table de gauche, avec les données correspondantes de la table de droite si elles existent ; sinon, les colonnes de la droite sont NULL.
  • RIGHT JOIN : Retourne toutes les lignes de la table de droite, avec les données correspondantes de la table de gauche si elles existent ; sinon, les colonnes de la gauche sont NULL.
  • FULL JOIN : Combine LEFT JOIN et RIGHT JOIN, renvoyant toutes les lignes des deux tables, avec NULL pour les colonnes manquantes lors de l'absence de correspondance.
  • Alias de tables : Nom temporaire donné à une table dans une requête pour simplifier la syntaxe et clarifier les jointures (ex : FROM Clients AS C).

📝 Points essentiels

  • Les jointures permettent de relier des tables via des conditions de correspondance, généralement sur des clés primaires et étrangères.
  • La syntaxe de base pour une jointure :
    SELECT colonnes
    FROM table1 AS t1
    [type de jointure] JOIN table2 AS t2 ON t1.colonne = t2.colonne
    
  • La jointure INNER JOIN ne retourne que les enregistrements ayant une correspondance dans les deux tables, ce qui est utile pour filtrer les données liées.
  • LEFT JOIN et RIGHT JOIN permettent d'inclure les données sans correspondance dans l'une ou l'autre table, facilitant l'identification des données orphelines ou manquantes.
  • FULL JOIN est utilisé pour obtenir une vue complète de deux tables, même si aucune correspondance n'existe.
  • Les alias simplifient la lecture et l’écriture des requêtes, surtout lorsqu’on joint plusieurs tables ou que les noms de colonnes sont similaires.
  • Dans le contexte de SQL Server, l’utilisation des jointures dans une requête SELECT est courante pour analyser et rapporter des données issues de plusieurs sources.

💡 À retenir

Les jointures entre tables en SQL Server sont essentielles pour combiner efficacement des données liées, en utilisant différents types selon le résultat souhaité : INNER, LEFT, RIGHT ou FULL JOIN. La maîtrise de leur syntaxe et de leur logique est fondamentale pour exploiter pleinement la puissance relationnelle de SQL.

📖 8. Fonctions analytiques

🔑 Notions clés & Définitions

  • Fonctions analytiques : Fonctions permettant d'effectuer des calculs sur un ensemble de lignes (fenêtre) sans regroupement, en utilisant la clause OVER() pour définir cette fenêtre. Elles facilitent le calcul de rangs, moyennes mobiles, cumul, etc. (support SQL Server SANCHEZ, 2023).

  • Syntaxe OVER() : Structure qui précise la fenêtre d’analyse pour une fonction analytique, en spécifiant le partitionnement et l’ordre des lignes. Exemple : OVER(PARTITION BY colonne ORDER BY colonne) (support SQL Server SANCHEZ, 2023).

  • Fonctions de classement : Fonctions qui attribuent un rang ou une position à chaque ligne dans une partition, notamment ROW_NUMBER(), RANK(), DENSE_RANK(), et NTILE(n). Elles permettent de classer et segmenter les données (support SQL Server SANCHEZ, 2023).

  • Fonction ROW_NUMBER() : Attribue un numéro unique à chaque ligne dans une partition, basé sur un ordre spécifié. Utile pour numéroter ou paginer les résultats (support SQL Server SANCHEZ, 2023).

  • Fonctions de cumul et moyenne mobile : Fonctions qui calculent des agrégats sur une fenêtre glissante ou cumulative, comme SUM(), AVG(), appliquées avec OVER() pour obtenir des résultats en temps réel ou par période (support SQL Server SANCHEZ, 2023).

📝 Points essentiels

  • Les fonctions analytiques utilisent la clause OVER() pour définir la fenêtre d’analyse, qui peut inclure PARTITION BY pour segmenter les données et ORDER BY pour définir l’ordre dans la fenêtre (support SQL Server SANCHEZ, 2023).

  • ROW_NUMBER() permet de numéroter les lignes dans une partition, utile pour la pagination ou l’identification de positions spécifiques (support SQL Server SANCHEZ, 2023).

  • RANK() et DENSE_RANK() classent les lignes en tenant compte des valeurs identiques, mais RANK() laisse des écarts dans la numérotation pour les ex-æquo, tandis que DENSE_RANK() ne le fait pas (support SQL Server SANCHEZ, 2023).

  • NTILE(n) répartit les lignes d’une partition en n groupes égaux, attribuant un numéro de groupe à chaque ligne, utile pour la segmentation en quartiles, déciles, etc. (support SQL Server SANCHEZ, 2023).

  • Les fonctions analytiques permettent de réaliser des calculs avancés comme la moyenne mobile, le cumul, ou le classement sans regrouper les données, ce qui facilite l’analyse temporelle ou par segment (support SQL Server SANCHEZ, 2023).

  • Exemple d’utilisation : SELECT val, ROW_NUMBER() OVER(ORDER BY val) AS rownum FROM Sales.OrderValues pour numéroter les résultats selon la valeur (support SQL Server SANCHEZ, 2023).

💡 À retenir

Les fonctions analytiques avec OVER() offrent une puissance d’analyse avancée en permettant de calculer des rangs, moyennes mobiles, et autres agrégats sur des fenêtres définies, sans regrouper ni filtrer les données.

📖 9. Procédures stockées

🔑 Notions clés & Définitions

  • Procédure stockée (Stored Procedure) : Ensemble de commandes SQL précompilées stockées dans la base de données, permettant d'exécuter une logique métier encapsulée. Elle peut accepter des paramètres d’entrée et de sortie pour transmettre ou récupérer des données. SANCHEZ (support) : elles facilitent la réutilisation, la maintenance et la sécurité des opérations SQL.

  • Paramètres d’entrée (Input Parameters) : Variables passées à une procédure stockée pour fournir des données ou des critères de traitement. Ils permettent de rendre la procédure dynamique et adaptable à différents contextes.

  • Paramètres de sortie (Output Parameters) : Variables qui récupèrent des résultats ou des états après l'exécution d'une procédure stockée. Ils permettent de transmettre des informations ou des résultats à l’appelant.

  • Encapsulation de logique métier : Utilisation des procédures stockées pour centraliser et sécuriser la logique métier, évitant la duplication de code et facilitant la gestion des modifications.

  • Exécution et gestion : La procédure stockée s’exécute par la commande EXEC ou EXECUTE. Elle peut être paramétrée pour gérer les erreurs, les transactions, et optimiser la performance via la précompilation.

📝 Points essentiels

  • La création d’une procédure stockée se fait avec la commande CREATE PROCEDURE suivie du nom et des paramètres. Elle contient un ou plusieurs blocs de commandes SQL, souvent avec gestion d’erreurs et transactions.

  • Les paramètres d’entrée sont déclarés avec @nomParam type, tandis que les paramètres de sortie utilisent @nomParam type OUTPUT. La procédure peut retourner plusieurs résultats via des jeux de résultats ou des paramètres de sortie.

  • La procédure stockée permet d’encapsuler la logique métier, ce qui favorise la cohérence, la sécurité (contrôle d’accès), et la performance (réutilisation du plan d’exécution).

  • La gestion de l’exécution inclut la possibilité d’utiliser EXEC ou EXECUTE, avec ou sans paramètres, et de traiter les erreurs avec TRY...CATCH.

  • La modification ou suppression d’une procédure se fait via ALTER PROCEDURE ou DROP PROCEDURE.

  • La procédure stockée peut aussi gérer des transactions internes pour garantir la cohérence des opérations.

  • La précompilation des procédures stockées permet d’optimiser leur exécution en évitant la recompilation à chaque appel.

  • La documentation et la maintenance sont facilitées par la centralisation de la logique métier dans ces procédures.

💡 À retenir

Les procédures stockées sont des blocs de code SQL précompilés permettant d’encapsuler la logique métier, facilitant la réutilisation, la sécurité et la performance dans SQL Server. Leur gestion efficace repose sur l’utilisation appropriée des paramètres d’entrée et de sortie, ainsi que sur une exécution contrôlée.

📖 10. Déclencheurs

🔑 Notions clés & Définitions

  • Déclencheurs (triggers) : Objets de base de données qui s'exécutent automatiquement en réponse à un événement spécifique sur une table ou une vue, permettant d'automatiser des actions ou de contrôler l'intégrité des données.
  • Types : AFTER et INSTEAD OF :
    • AFTER : s'exécute après l'événement déclencheur, par exemple après une insertion, mise à jour ou suppression.
    • INSTEAD OF : remplace l'action déclenchée, permettant d'intervenir avant l'opération ou de la redéfinir.
  • Utilisation : Les triggers sont utilisés pour le contrôle d’intégrité, la gestion d’audit, la synchronisation de données ou la mise en place de règles métier automatiques.
  • Syntaxe de création :
    CREATE TRIGGER nom_trigger  
    ON nom_table  
    {AFTER | INSTEAD OF}  
    {INSERT | UPDATE | DELETE}  
    AS  
    -- Actions à exécuter
    
  • Exemple :
    CREATE TRIGGER trg_AuditInsert  
    ON Clients  
    AFTER INSERT  
    AS  
    BEGIN  
        INSERT INTO AuditLog (Action, DateAction)  
        SELECT 'Insertion', GETDATE()  
        FROM inserted  
    END
    

📝 Points essentiels

  • Les triggers s'exécutent automatiquement en réponse à des opérations DML (INSERT, UPDATE, DELETE).
  • La distinction principale entre AFTER et INSTEAD OF réside dans le moment d'exécution : après ou en remplacement de l'événement.
  • La syntaxe de création inclut la clause ON pour spécifier la table ou la vue concernée, et la clause AS pour définir le corps du trigger.
  • Les triggers peuvent accéder aux pseudo-tables inserted et deleted pour manipuler les données affectées.
  • Leur utilisation permet de renforcer la cohérence des données, d’auditer les modifications ou de mettre en œuvre des règles métier automatiques.
  • Point à retenir : Les triggers doivent être utilisés avec précaution car ils peuvent impacter la performance et compliquer la gestion des transactions.

💡 À retenir

Les déclencheurs (triggers) sont des mécanismes automatiques qui réagissent à des événements sur la base de données, permettant d’assurer l’intégrité, l’audit ou la synchronisation des données, en s’exécutant selon leur type (AFTER ou INSTEAD OF) et leur moment précis.

📖 11. Fonctions utilisateur

🔑 Notions clés & Définitions

  • Fonctions scalaires : Fonctions définies par l’utilisateur qui retournent une seule valeur pour chaque ligne d'une requête. Elles permettent d'encapsuler une logique de calcul ou de transformation simple, et sont appelées dans des requêtes ou procédures pour produire une valeur spécifique.
  • Fonctions table-valued : Fonctions créées par l’utilisateur qui retournent un ensemble de résultats sous forme de table. Elles facilitent la réutilisation de requêtes complexes ou de logique métier sous forme de fonctions modulaires, pouvant être intégrées dans des requêtes SQL.
  • Encapsulation de logique réutilisable : Processus consistant à regrouper une logique métier ou de calcul dans une fonction utilisateur, afin de la rendre facilement réutilisable dans plusieurs requêtes ou procédures, améliorant ainsi la maintenabilité et la cohérence du code.
  • Appel dans requêtes et procédures : Les fonctions utilisateur peuvent être invoquées directement dans des requêtes SQL ou des procédures stockées, permettant d'appliquer une logique spécifique sans dupliquer le code, ce qui favorise la modularité.
  • Types : scalaires, table-valued (voir aussi "Types" dans la section), permettant de distinguer la nature du résultat retourné par la fonction.

📝 Points essentiels

  • Les fonctions scalaires sont souvent utilisées pour effectuer des calculs ou transformations simples, comme convertir des formats ou calculer des valeurs dérivées, et peuvent prendre en paramètres des colonnes ou constantes.
  • Les fonctions table-valued sont particulièrement utiles pour encapsuler des requêtes complexes ou des filtres réutilisables, en retournant un ensemble de lignes pouvant être joint ou filtré dans d’autres requêtes.
  • La crédibilité de ces fonctions repose sur leur capacité à encapsuler la logique métier, évitant la duplication de code, et à être appelées dans des requêtes ou procédures pour une utilisation cohérente.
  • La création de fonctions utilisateur se fait via la syntaxe CREATE FUNCTION, en précisant leur type (scalaires ou table-valued), leur corps et leur logique.
  • Exemples d’utilisation : calcul de taxes, transformation de chaînes, génération de valeurs aléatoires, ou encore filtrage avancé dans des requêtes complexes.

💡 À retenir

Les fonctions utilisateur, qu’elles soient scalaires ou table-valued, permettent d'encapsuler une logique spécifique, favorisant la réutilisation, la cohérence et la simplification des requêtes SQL en intégrant des blocs de code modulaires dans les applications.

📖 12. Gestion des transactions

🔑 Notions clés & Définitions

  • BEGIN TRANSACTION : Instruction qui marque le début d'une transaction, permettant de regrouper plusieurs opérations en une unité cohérente. Elle garantit que toutes les opérations successives soient traitées comme une seule unité logique.
  • COMMIT : Commande qui valide toutes les modifications effectuées durant la transaction, rendant ces changements permanents dans la base de données. Selon SANCHEZ (support SQL Server), elle assure la cohérence en finalisant la transaction.
  • ROLLBACK : Instruction qui annule toutes les opérations effectuées depuis le début de la transaction, permettant de revenir à l’état initial en cas d’erreur ou de condition particulière.
  • Contrôle de la cohérence et atomicité : La transaction doit assurer que toutes ses opérations soient exécutées entièrement ou pas du tout, garantissant la cohérence des données. La propriété d’atomicité est essentielle pour éviter les états intermédiaires incohérents.
  • Isolation des transactions et verrouillage : Technique qui empêche les transactions concurrentes d’interférer, en utilisant des mécanismes de verrouillage pour garantir l’intégrité des données. Selon SANCHEZ, cela évite les phénomènes de lecture sale, de non-lecture ou de mise à jour non-commutative.
  • Utilisation dans procédures et scripts : Les commandes de gestion des transactions sont souvent intégrées dans des procédures stockées ou scripts pour assurer la cohérence lors de traitements complexes ou automatisés, notamment dans le contexte SQL Server.

📝 Points essentiels

  • La gestion des transactions repose sur trois commandes principales : BEGIN TRANSACTION, COMMIT et ROLLBACK.
  • BEGIN TRANSACTION démarre une nouvelle transaction, qui peut contenir plusieurs opérations SQL.
  • COMMIT valide toutes les opérations de la transaction, rendant les changements visibles à tous les utilisateurs.
  • ROLLBACK annule toutes les opérations depuis le début de la transaction, permettant de revenir à l’état initial en cas d’erreur ou de condition particulière.
  • Le contrôle de la cohérence et de l’intégrité des données est assuré par le principe d’atomicité, qui garantit que toutes les opérations d’une transaction soient exécutées ou aucune.
  • L’isolation des transactions est assurée par des mécanismes de verrouillage, empêchant les phénomènes de lecture sale, de lecture non-repeatée ou de mise à jour non-commutative, selon le niveau d’isolation choisi.
  • Ces concepts sont fondamentaux pour maintenir la fiabilité et la cohérence des données dans SQL Server, notamment lors de traitements complexes ou simultanés.
  • La gestion des transactions est couramment utilisée dans les procédures stockées et scripts pour automatiser et sécuriser les opérations critiques.

💡 À retenir

La gestion des transactions en SQL Server repose sur le contrôle précis de l’atomicité et de l’isolation, permettant d’assurer la cohérence et la fiabilité des données lors de traitements complexes ou simultanés.

📊 Tableaux de Synthèse

CritèreBases OLTPBases OLAPAuteur / Référence
ObjectifTraitement transactionnel en temps réelAnalyse multidimensionnelle, décision stratégiqueSANCHEZ (support)
OrganisationTables relationnelles, normaliséesStructures multidimensionnelles (cubes, dimensions)SANCHEZ (support)
Performance principaleRapidité pour opérations CRUDCapacité à agréger et synthétiser de grandes quantités de donnéesSANCHEZ (support)
Utilisation typiqueGestion des ventes, gestion bancaire, ERPReporting, Business Intelligence, Data WarehouseSANCHEZ (support)
Exemples de structuresTables, index optimisésCubes, dimensions, mesuresSANCHEZ (support)

⚠️ Pièges & Confusions Fréquentes

  1. Confondre OLTP et OLAP : OLTP concerne la gestion transactionnelle, OLAP l’analyse stratégique.
  2. Croire que les bases OLAP sont toujours relationnelles : elles utilisent aussi des structures multidimensionnelles.
  3. Oublier que la normalisation est essentielle pour OLTP, mais pas pour OLAP où la dénormalisation facilite l’analyse.
  4. Confondre les fichiers de base (primaire, secondaire, journal) avec les types de bases.
  5. Négliger l’importance de la taille et de la répartition des fichiers pour la performance.
  6. Confusion entre les modules SQL Server : Analysis Services vs Reporting Services.
  7. Penser que toutes les bases sont systématiquement relationnelles ou multidimensionnelles, alors qu’elles peuvent être hybrides.

✅ Checklist Examen

  • Connaître la définition de PERROUX sur la croissance économique.
  • Maîtriser la composition et le rôle du moteur de base de données dans SQL Server, selon SANCHEZ.
  • Identifier les bases système de SQL Server : msdb, master, model, tempdb.
  • Expliquer la différence entre bases OLTP et OLAP, en citant leurs caractéristiques principales, selon SANCHEZ.
  • Savoir quels fichiers composent une base SQL Server (primaire, secondaire, journal) et leur rôle.
  • Connaître les modules de SQL Server : Analysis Services, Integration Services, Reporting Services.
  • Comprendre le fonctionnement des jointures en SQL : INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN.
  • Savoir utiliser et créer des fonctions SQL : scalaires, agrégées, analytiques.
  • Maîtriser la syntaxe et l’usage des procédures stockées pour automatiser des tâches.
  • Connaître le fonctionnement des déclencheurs (triggers) pour la gestion d’événements.
  • Savoir créer et utiliser des fonctions utilisateur pour modulariser le code.
  • Comprendre la gestion des transactions : BEGIN TRAN, COMMIT, ROLLBACK, isolation.
  • Vérifier la maîtrise du vocabulaire spécifique à la gestion de bases et des modules SQL Server.

Metti alla prova le tue conoscenze

Metti alla prova le tue conoscenze su Introduction aux bases de données SQL Server con 12 domande a scelta multipla con correzioni dettagliate.

1. Qu'est-ce que le moteur de base de données dans SQL Server ?

2. Quelle est la fonction principale de la base de données msdb dans SQL Server ?

Fai il quiz →

Ripassa con le flashcard

Memorizza i concetti chiave di Introduction aux bases de données SQL Server con 24 flashcard interattive.

Moteur de base de données — rôle ?

Stocke, traite et sécurise les données.

Analysis Services — fonction ?

Gère les données multidimensionnelles et cubes.

Integration Services — objectif ?

Automatise l’ETL pour Data Warehouse.

Vedi le flashcard →

Similar courses

Crea le tue schede di revisione

Importa il tuo corso e l'AI genera schede, quiz e flashcard in 30 secondi.

Generatore di schede