Chapitre V – Modèle Physique de Données
(MPD) et le Langage SQL
Pr. Zahra OUGHANNOU 1
Introduction
Dans ce chapitre, nous allons voir comment le Modèle Physique de Données
(MPD), est converti en base de données concrète, grâce au langage SQL et à son
implémentation sur un SQL serveur.
Vous allez apprendre à relier chaque étape théorique à des pratiques concrètes,
en passant de la conception abstraite à la réalisation physique de la base de
données.
Pr. Zahra OUGHANNOU 2
Modèle Physique de Données
Le MPD est la traduction du modèle logique de données (MLD) vers une
représentation plus concrète, qui respecte les contraintes techniques d'une base
de données.
C’est la phase où les entités deviennent des tables, les associations deviennent
des relations, et où nous définissons les types de données, les index et les
contraintes (clés primaires, clés étrangères).
Pr. Zahra OUGHANNOU 3
Correspondance avec Merise
Merise propose une approche étape par étape, allant du Modèle Conceptuel de
Données (MCD) au Modèle Logique de Données (MLD) puis au MPD.
L’objectif du MPD est d’optimiser la structure des données pour répondre aux
exigences de performance et de stockage, tout en respectant les règles
d’intégrité.
Pr. Zahra OUGHANNOU 4
Caractéristiques principales du MPD
Tables : Les éléments du MLD sont traduits en tables avec des colonnes
représentant les attributs.
Types de données : Chaque colonne est définie avec un type de donnée
approprié (INT, VARCHAR, DATE, etc.).
Contraintes d’intégrité : Le MPD spécifie les clés primaires, les clés étrangères,
et les contraintes uniques pour garantir la cohérence des données.
Index : Des index peuvent être créés pour améliorer la performance des requêtes
sur certaines colonnes fréquemment utilisées dans les critères de recherche.
Exemple : Supposons que nous avons une table employée qui contient les
colonnes suivantes : id, nom, prenom, et departement. Pour améliorer la
performance des requêtes qui recherchent des employés par leur nom, nous
pouvons créer un index sur la colonne nom.
CREATE INDEX idx_nom ON clients(nom);
Pr. Zahra OUGHANNOU 5
Langage SQL
Le langage SQL est utilisé pour créer les structures physiques des bases de
données, ainsi que pour manipuler les données une fois celles-ci créées.
LDD (Langage de description des données) est un sous-ensemble du langage
SQL qui est utilisé pour définir et structurer des objets dans une base de
données, comme des tables, des index, des schémas, etc. Ces commandes
modifient la structure de la base de données elle-même.
LMD (Langage de manipulation des données) est utilisé pour manipuler les
données stockées dans une base de données. Les commandes LMD permettent
d'ajouter, de mettre à jour, de supprimer ou de lire des données.
LCD (Langage de contrôle des données) est utilisé pour contrôler les accès et
gérer les permissions des utilisateurs. Les commandes LCD sont cruciales pour
la sécurité d'une base de données.
Pr. Zahra OUGHANNOU 6
Langage SQL
Le langage SQL est utilisé pour créer les structures physiques des bases de
données, ainsi que pour manipuler les données une fois celles-ci créées.
Synthèse
LDD : Créer, modifier, supprimer la structure des bases de données.
LMD : Manipuler les données dans les tables.
LCD : Gérer les permissions et les droits d’accès aux données.
Pr. Zahra OUGHANNOU 7
Types de données en SQL
Types numériques
INT / INTEGER : Nombres entiers (ex: 42)
FLOAT / REAL : Nombres à virgule flottante
Types caractères
CHAR(n) : Chaîne de longueur fixe de n caractères
VARCHAR(n) : Chaîne de longueur variable jusqu'à n caractères
TEXT : Texte de longueur variable illimitée
Types Date/Heure Types booléens
DATE : Date (YYYY-MM-DD) BOOLEAN : TRUE/FALSE
TIME : Heure (HH:MM:SS)
Pr. Zahra OUGHANNOU 8
Contraintes d'intégrité en SQL
-- PRIMARY KEY (Clé primaire) : Identifie de manière unique chaque enregistrement dans
une table
-- Caractéristiques : - Automatiquement UNIQUE et NOT NULL
- Une seule par table
- Peut être simple ou composite (plusieurs colonnes)
-- FOREIGN KEY (Clé étrangère) : Établit une relation entre deux tables.
-- NOT NULL (Valeur obligatoire) : Empêche une colonne de contenir des valeurs NULL
-- UNIQUE (Valeur unique) : Garantit que la valeur d'une colonne ou d'une combinaison de
colonnes est unique. Plusieurs contraintes UNIQUE possibles par table.
-- CHECK (Vérification de condition) : Vérifie qu'une condition est respectée
-- DEFAULT (Valeur par défaut) : Définit une valeur par défaut si aucune n'est spécifiée
-- AUTO_INCREMENT : Génère automatiquement des valeurs uniques à chaque fois qu'une
nouvelle ligne est insérée dans une table. ( Ex : Id )
Pr. Zahra OUGHANNOU 9
SQL Server comme SGBD
SQL Server est un logiciel développé par Microsoft qui permet de gérer des
bases de données relationnelles. Il offre un ensemble de fonctionnalités pour la
création, la gestion, et la sécurisation des bases de données, ainsi que des outils
pour l'optimisation des performances et l'administration.
En tant que SGBD, SQL Server est couramment utilisé pour :
Stocker les données dans des tables relationnelles.
Gérer l'accès à la base de données.
Sécuriser les données en gérant les utilisateurs et leurs droits d'accès.
Exécuter des requêtes SQL pour manipuler les données (insertion, mise à jour,
suppression).
Pr. Zahra OUGHANNOU 10
SQL Server : Architecture
SQL Server en tant qu'architecture client-serveur
SQL Server fonctionne selon une architecture client-serveur qui permet aux
utilisateurs et aux applications de se connecter et d'interagir avec la base de
données, même depuis des emplacements différents.
L'architecture client-serveur est un modèle de communication où :
•Le serveur : Gère, stocke, et protège les données. Il reçoit des requêtes de la part
des clients et renvoie les résultats.
•Le client : Représente des ordinateurs
ou des applications qui envoient des
demandes de traitement de données au
serveur.
Pr. Zahra OUGHANNOU 12
Architecture Client-Serveur de SQL Server
Envoi d'une Requête par le Client :
• L’utilisateur ou l’application client utilise un logiciel (comme une application
web ou SSMS) pour envoyer une requête SQL au serveur (par exemple, SELECT,
INSERT, UPDATE, etc.).
Traitement de la Requête par le Serveur :
• Le moteur de base de données de SQL Server reçoit la requête, et génère un plan
d’exécution pour la traiter.
• Le serveur accède aux tables, exécute les opérations nécessaires (par exemple
lire les données, les insérer ou les mettre à jour).
Envoi de la Réponse :
• Le serveur renvoie les résultats de la requête au client. Par exemple, une requête
SELECT renvoie un ensemble de lignes de données, tandis qu'une requête
INSERT renvoie un message indiquant le succès ou l'échec de l'opération.
Pr. Zahra OUGHANNOU 13
Connexion Client-Serveur avec SQL Server
SQL Server Management Studio (SSMS)
• Client : L'utilisateur se connecte à SQL Server avec SSMS pour administrer la
base de données.
• Serveur : SQL Server écoute la requête, traite les demandes (telles que l'ajout
d'une table ou la modification des données).
Application Web
• Client : L'application web envoie une requête SELECT pour obtenir des
informations sur un produit.
• Serveur : SQL Server renvoie les résultats de la requête à l'application, qui
affiche les informations à l'utilisateur.
Pr. Zahra OUGHANNOU 14
Comment télécharger et installer MS SQL Server
1. Télécharger et installer SQL Server Setup
• [Link]
2. Installer SQL Server Management Studio (SSMS)
• [Link]
management-studio-ssms?view=sql-server-2017
Pr. Zahra OUGHANNOU 15
Langage de description des données
(LDD)
Concepts et rôle du LDD
Définition : Le Langage de Description des Données (LDD) est un langage utilisé
pour définir la structure et les caractéristiques des données dans une base de
données. C'est une composante essentielle des systèmes de gestion de bases de
données (SGBD) et de leur langage SQL.
Rôle :
Définir la structure des données avant leur utilisation.
Assurer l’intégrité des données grâce à l’ajout de contraintes (clé primaire,
étrangère, unicité, etc.).
Faciliter la maintenance : les structures définies peuvent être modifiées,
supprimées ou ajustées.
Pr. Zahra OUGHANNOU 17
Fonctionnalités du LDD
Création de structures : Les commandes de création permettent de définir les
entités comme les bases de données, les tables et les colonnes.
CREATE : Crée une nouvelle structure.
• CREATE DATABASE : Crée une base de données.
• CREATE TABLE : Crée une table avec ses colonnes et contraintes.
• CREATE INDEX : Crée un index pour accélérer les requêtes.
Modification de structures : Les commandes de modification permettent d’ajuster
les structures existantes sans perdre les données.
ALTER : Modifie une structure existante.
• Ajouter ou supprimer une colonne.
• Modifier un type de données ou une contrainte.
• Ajouter ou retirer un index ou une clé étrangère.
Pr. Zahra OUGHANNOU 18
Fonctionnalités du LDD
Suppression de structures : Ces commandes permettent de supprimer une entité
entière, y compris ses données et sa structure.
DROP : Supprime une structure entière.
• DROP DATABASE : Supprime une base de données et toutes ses tables.
• DROP TABLE : Supprime une table.
• DROP INDEX : Supprime un index.
Vidage de structures : Une commande spécifique permet de vider les données tout
en conservant la structure.
TRUNCATE : Supprime toutes les lignes d’une table sans supprimer la table
elle-même.
Pr. Zahra OUGHANNOU 19
Contraintes et intégrité des données
Le LDD est également responsable de l’intégrité des données. Lors de la définition
des structures, il permet d’ajouter des contraintes pour garantir la cohérence des
données.
Contraintes fréquentes :
• NOT NULL : Empêche qu’une colonne contienne des valeurs nulles.
• UNIQUE : Garantit que les valeurs dans une colonne ou un ensemble de
colonnes sont uniques.
• PRIMARY KEY : Identifie de manière unique chaque ligne d’une table.
• FOREIGN KEY : Définit une relation entre deux tables et garantit
l’intégrité référentielle.
• CHECK : Impose une règle de validation des données (exemple : prix > 0).
• DEFAULT : Définit une valeur par défaut pour une colonne.
Pr. Zahra OUGHANNOU 20
Création de structures avec LDD
CREATE DATABASE : Créer une base de données
La commande CREATE DATABASE permet de créer une nouvelle base de
données, c'est-à-dire un espace structuré conçu pour stocker et organiser des
données.
Syntaxe :
Exemple simple : CREATE DATABASE Bibliotheque;
Remarque : Pour travailler sur une base de données spécifique dans SQL
Server, on utilise la commande USE avant de créer des objets comme des tables
ou des index.
USE Bibliotheque; : Cette commande sélectionne la base de données
Bibliotheque comme contexte actif pour toutes les opérations SQL suivantes.
Pr. Zahra OUGHANNOU 21
Création de structures avec LDD
CREATE TABLE : Créer une table
La commande CREATE TABLE est utilisée pour définir une table dans une
base de données. Une table contient des colonnes qui représentent les champs
et des lignes qui stockent les données.
Syntaxe :
type_de_donnees : Spécifie le type de données de la colonne (ex. INT, VARCHAR,
DATE, etc.).
Contraintes liées aux colonnes: Définissent des règles spécifiques pour chaque
colonne (NOT NULL, UNIQUE, etc.).
Contraintes liées à la table : Définissent des relations globales (PRIMARY KEY,
FOREIGN KEY, etc.).
Pr. Zahra OUGHANNOU 22
Création de structures avec LDD
CREATE TABLE : Créer une table
Exemple :
Explication :
id INT PRIMARY KEY IDENTITY(1,1) : La colonne id est une clé primaire, et sa
valeur s'auto-incrémente à partir de 1.
titre VARCHAR(100) : Cette colonne accepte des chaînes de 100 caractères et est
obligatoire.
prix DECIMAL(10, 2) : La colonne prix stocke des nombres décimaux avec 10
chiffres au total, dont 2 après la virgule.
CHECK (prix > 0) : Contrainte pour garantir que le prix est supérieur à 0.
date_publication : Cette colonne permet de stocker des valeurs de type DATE.
Pr. Zahra OUGHANNOU 23
Création de structures avec LDD
CREATE TABLE : Créer une table
Remarque : En SQL Server, l'option IDENTITY(1,1) est utilisée pour créer une
colonne avec une valeur auto-incrémentée, généralement utilisée pour des clés
primaires. Elle permet de générer automatiquement un identifiant unique pour
chaque ligne insérée dans une table.
IDENTITY(val_1, val_2)
val_1 : La valeur initiale pour la première ligne (par exemple, 1).
val_2 : La valeur à ajouter à la colonne pour chaque nouvelle ligne (par
exemple, 1 pour incrémenter de 1 à chaque fois).
Pr. Zahra OUGHANNOU 24
Création de structures avec LDD
CREATE INDEX : Créer un index
Un index est une structure qui accélère les performances des requêtes en
facilitant la recherche des données dans une table. Il est particulièrement utile
pour les colonnes souvent utilisées dans les clauses WHERE ou ORDER BY.
Syntaxe :
Exemple simple :
L’index idx_titre accélère les recherches sur la colonne titre.
Pr. Zahra OUGHANNOU 25
Création de structures avec LDD
Création avec clés étrangères :
Les deux tables sont reliées par une relation de clé étrangère :
La colonne auteur_id de la table Livre pointe vers la colonne id de la table Auteur.
Pr. Zahra OUGHANNOU 26
Modification de structures avec LDD
La commande ALTER est utilisée pour apporter des modifications aux objets
existants dans une base de données, tels que les tables, les colonnes, les
contraintes, ou les index. Contrairement à la commande CREATE, cette
commande agit sur des objets déjà définis.
ALTER TABLE : Modification d’une table
En SQL Server, la commande ALTER TABLE est utilisée pour modifier une table
existante. Cette commande peut être utilisée pour :
Ajouter ou supprimer des colonnes.
Modifier les types de données ou les contraintes sur les colonnes.
Ajouter ou supprimer des clés primaires et des clés étrangères.
Renommer des colonnes ou des tables (SQL Server 2016 ou version supérieure).
Pr. Zahra OUGHANNOU 27
Modification de structures avec LDD
ALTER TABLE : Modification d’une table
Syntaxe générale :
Pr. Zahra OUGHANNOU 28
Modification de structures avec LDD
ALTER TABLE : Modification d’une table
Exemple:
Pr. Zahra OUGHANNOU 29
Modification de structures avec LDD
ALTER TABLE : Modification d’une table
Renommer des colonnes ou des tables (SQL Server 2016 ou version supérieure).
Renommer une colonne
Exemple :
Renommer une Table
Exemple :
Pr. Zahra OUGHANNOU 30
Suppression de structures avec LDD
Suppression d'une base de données
La commande DROP DATABASE est utilisée pour supprimer une base de
données existante, y compris toutes les tables, vues, procédures, et données
associées.
Syntaxe :
Exemple simple :
Toutes les données et objets dans la base seront perdus de manière irréversible.
Vérifiez que personne n'est connecté à la base avant la suppression. Utilisez cette
commande pour mettre la base hors connexion :
Pr. Zahra OUGHANNOU 31
Suppression de structures avec LDD
Suppression d'une table
La commande DROP TABLE supprime une table entière ainsi que toutes les
données et contraintes qui lui sont associées.
Syntaxe :
Exemple simple :
Vous ne pouvez pas supprimer une table si elle est référencée par une clé
étrangère dans une autre table.
Si des relations existent, désactivez temporairement les contraintes :
Pr. Zahra OUGHANNOU 32
Suppression de structures avec LDD
Suppression d'un index
La commande DROP INDEX est utilisée pour supprimer un index d'une table.
Syntaxe :
Exemple simple :
L'index sera complètement supprimé, mais cela n'affectera pas les données dans la
table.
Pr. Zahra OUGHANNOU 33
Suppression de structures avec LDD
Suppression d'une contrainte
Pour supprimer une contrainte (clé primaire, clé étrangère, CHECK ou
UNIQUE), utilisez ALTER TABLE avec DROP CONSTRAINT.
Syntaxe :
Exemple simple :
Identifiez le nom exact de la contrainte avant de la supprimer. Vous pouvez utiliser
cette requête pour les retrouver :
Pr. Zahra OUGHANNOU 34
Langage de manipulation des données
(LMD)
Manipulation des Données avec LMD
En SQL, LMD (Langage de Manipulation des Données) regroupe les commandes
utilisées pour manipuler les données dans les bases de données. Ce langage fait
partie des trois grands sous-ensembles du SQL (avec le LDD – Langage de
Définition des Données, et le LCD – Langage de Contrôle des Données).
Les requêtes principales du LMD sont :
SELECT : pour interroger et extraire des données d'une ou plusieurs tables
INSERT : pour ajouter de nouvelles données dans une table
UPDATE : pour modifier des données existantes
DELETE : pour supprimer des enregistrements
Ces requêtes permettent de gérer efficacement les informations stockées dans une
base de données relationnelle, en répondant aux besoins de recherche, d'insertion,
de mise à jour, et de suppression des données.
Pr. Zahra OUGHANNOU 36
Manipulation des Données avec LMD
SELECT : Récupération de données
La commande SELECT est utilisée pour interroger les données dans une ou
plusieurs tables. C'est la commande la plus utilisée en SQL.
Syntaxe :
Explications des éléments :
SELECT : Spécifie les colonnes à extraire.
FROM : Indique la table source.
WHERE : Applique des conditions pour filtrer les résultats.
Exemple : Récupérer tous les étudiants avec un âge supérieur à 20.
ORDER BY : Trie les résultats selon une ou plusieurs colonnes.
• ASC : Ordre croissant (par défaut si rien n'est spécifié).
• DESC : Ordre décroissant.
Exemple : Trier les étudiants par âge en ordre croissant.
Pr. Zahra OUGHANNOU 37
Manipulation des Données avec LMD
ORDER BY : Trie les résultats selon une ou plusieurs colonnes.
Tri multiple (plusieurs colonnes) : Trie les étudiants par âge en ordre croissant.
Pour les étudiants ayant le même âge, trie en ordre décroissant selon leur
moyenne.
• La requête trie les résultats d'abord par âge croissant, puis, pour les
étudiants du même âge, par moyenne décroissante.
Tri par numéro de colonne (dans des requêtes simples) : Trie selon la 2ᵉ
colonne (ici age) en ordre décroissant.
Tri sur des expressions ou calculs : La clause ORDER BY peut utiliser des expressions ou des calculs
pour trier les résultats.
• Le calcul 2024 - annee_naissance est maintenant
remplacé par le terme age.
• La clause ORDER BY trie toujours sur l'alias age.
Pr. Zahra OUGHANNOU 38
Manipulation des Données avec LMD
ORDER BY : Trie les résultats selon une ou plusieurs colonnes.
Tri multiple (plusieurs colonnes) : Trie les étudiants par âge en ordre croissant.
Pour les étudiants ayant le même âge, trie en ordre décroissant selon leur
moyenne.
Tri par numéro de colonne (dans des requêtes simples) : Trie selon la 2ᵉ
colonne (ici age) en ordre décroissant.
Tri par valeur NULL Dans certaines bases de données, les valeurs NULL sont
triées soit au début, soit à la fin. Vous pouvez spécifier explicitement leur
position.
* Trie les moyennes en ordre croissant et place les valeurs NULL à la fin.
Tri sur des expressions ou calculs : La clause ORDER BY peut utiliser des expressions ou des calculs
pour trier les résultats.
• Le calcul 2024 - annee_naissance est maintenant
remplacé par le terme age.
• La clause ORDER BY trie toujours sur l'alias age.
Pr. Zahra OUGHANNOU 39
Manipulation des Données avec LMD
GROUP BY : La clause GROUP BY regroupe les lignes ayant des valeurs
similaires dans une colonne ou un ensemble de colonnes.
* La clause GROUP BY departement regroupe les lignes
ayant le même département.
* La fonction d'agrégation COUNT(*) compte le nombre
d'étudiants dans chaque groupe.
HAVING : La clause HAVING est utilisée pour filtrer les résultats des groupes
créés avec GROUP BY.
* HAVING COUNT(*) > 5 : conserve uniquement les
groupes ayant plus de 5 étudiants.
Remarque :
HAVING permet de filtrer les groupes en fonction d'une condition (souvent basée sur une
fonction d'agrégat). fonction_agregat(colonne) AS alias
Les fonctions d’agrégat en SQL permettent de réaliser des calculs sur un ensemble de lignes
pour produire un résultat unique par groupe ou par requête. Elles sont couramment utilisées avec
GROUP BY pour résumer ou analyser les données [SUM(), AVG(), COUNT(), MAX(), MIN()].
Pr. Zahra OUGHANNOU 40
Manipulation des Données avec LMD
Ordre complet des clauses dans une requête SELECT en SQL
En SQL, les clauses d'une requête SELECT doivent suivre un ordre précis pour
être valides. Voici l'ordre exact avec des explications détaillées :
Syntaxe :
Explications des éléments :
SELECT : Spécifie les colonnes à extraire.
FROM : Indique la table source.
WHERE : Applique des conditions pour filtrer les résultats.
GROUP BY : Regroupe les données basées sur une ou plusieurs colonnes.
HAVING : Filtre les groupes créés par GROUP BY.
ORDER BY : Trie les résultats finaux selon une ou plusieurs colonnes.
Pr. Zahra OUGHANNOU 41
Manipulation des Données avec LMD
Ordre complet des clauses dans une requête SELECT en SQL
En SQL, les clauses d'une requête SELECT doivent suivre un ordre précis pour
être valides. Voici l'ordre exact avec des explications détaillées :
Syntaxe :
Explications des éléments :
SELECT : Spécifie les colonnes à extraire.
FROM : Indique la table source.
WHERE : Applique des conditions pour filtrer les résultats.
GROUP BY : Regroupe les données basées sur une ou plusieurs colonnes.
HAVING : Filtre les groupes créés par GROUP BY.
ORDER BY : Trie les résultats finaux selon une ou plusieurs colonnes.
LIMIT : Limite le nombre de lignes retournées par la requête.
LIMIT 5; Affiche uniquement les 5 premières lignes.
Pr. Zahra OUGHANNOU 42
Manipulation des Données avec LMD
INSERT : Ajout de données
La commande INSERT permet d’ajouter de nouvelles lignes dans une table d'une
base de données. Elle est essentielle pour insérer des données initiales ou enrichir
une base existante.
Syntaxe :
Insertion dans toutes les colonnes de la table et dans le même ordre
Insertion dans des colonnes spécifiques
* Les colonnes non spécifiées recevront leur valeur par défaut (ou NULL
si aucune valeur par défaut n’est définie).
Insertion de plusieurs lignes
Pr. Zahra OUGHANNOU 43
Manipulation des Données avec LMD
INSERT : Ajout de données
Insérer avec une sou-requête
La commande INSERT avec une sous-requête permet d'insérer des données dans une table en les
récupérant directement d'une autre table ou d'une requête.
Cela est utile lorsque :
• Vous voulez copier des données d'une table à une autre.
• Vous voulez insérer uniquement des données spécifiques à partir d'une condition ou d'un calcul.
Exemple : Insérer dans une table temporaire.
Créer une table temporaire pour contenir uniquement les étudiants majeurs.
Cas 1 : Créer manuellement la
table avant d'utiliser INSERT
Cas 2 : Créer et insérer simultanément avec
SELECT … INTO
Cette commande crée automatiquement une table avec les
colonnes et types de données dérivés de la sous-requête.
Pr. Zahra OUGHANNOU 44
Manipulation des Données avec LMD
UPDATE : Modification de données
La commande UPDATE est utilisée pour modifier des données existantes dans une
ou plusieurs lignes d'une table. Elle permet de mettre à jour les valeurs des colonnes
selon des conditions définies.
Syntaxe :
Modifier la moyenne et le département d’un étudiant.
L'étudiant avec l'ID 102 a maintenant une moyenne de 15 et
appartient au département "Physique".
Mettre à jour plusieurs lignes : Augmenter la moyenne de tous
les étudiants du département "Informatique" de 2 points.
Tous les étudiants du département "Informatique" ont vu
leur moyenne augmenter de 2.
Mettre à jour toutes les lignes : Attribuer une moyenne par
défaut de 10 à tous les étudiants.
Toutes les lignes de la table etudiants sont modifiées.
Pr. Zahra OUGHANNOU 45
Manipulation des Données avec LMD
Les jointures en SQL Server
Les jointures en SQL Server permettent de combiner les données de plusieurs tables
en fonction d'une relation entre elles. Elles sont utilisées pour interroger des
données réparties sur différentes tables.
Syntaxe :
Exemple :
Cette jointure relie la table Etudiants (alias e) à la table Departements
(alias d) en utilisant la condition : ON e.departement_id = [Link]
Cela signifie que pour chaque ligne de la table Etudiants, SQL cherche une correspondance dans la table
Departements où e.departement_id est égal à [Link].
Pr. Zahra OUGHANNOU 46
Manipulation des Données avec LMD
UPDATE avec jointure en SQL Server
Dans SQL Server, vous pouvez effectuer une mise à jour (UPDATE) en utilisant une
jointure entre deux tables. Cela permet de modifier des données dans une table en
utilisant des informations provenant d'une autre table.
Syntaxe :
Exemple : Réduire le stock dans la table Produits en fonction des quantités commandées
dans la table Commandes.
[Link] = [Link] - [Link] : Réduit le stock du produit en
fonction des quantités commandées.
ON [Link] = c.produit_id : Relie les produits aux commandes
via l'ID du produit.
WHERE [Link] <= [Link] : Assure que le stock reste
positif (condition pour éviter une quantité négative)..
Pr. Zahra OUGHANNOU 47
Manipulation des Données avec LMD
DELETE : Suppression de données
La commande DELETE est utilisée pour supprimer des lignes spécifiques dans une
table. Elle offre un moyen flexible de retirer des données en fonction de conditions
définies. Cependant, elle doit être utilisée avec précaution, car les lignes supprimées
ne peuvent pas être restaurées sans sauvegarde préalable.
Syntaxe :
Supprimer un étudiant spécifique dans la table Etudiants.
Supprimer tous les étudiants d'un département particulier.
Supprimer toutes les données de la table Commandes.
Toutes les lignes de la table Commandes sont supprimées, mais la structure de la table est
conservée.
Pr. Zahra OUGHANNOU 48
Manipulation des Données avec LMD
DELETE : Suppression de données
La commande DELETE est utilisée pour supprimer des lignes spécifiques dans une table. Elle offre
un moyen flexible de retirer des données en fonction de conditions définies. Cependant, elle doit être
utilisée avec précaution, car les lignes supprimées ne peuvent pas être restaurées sans sauvegarde
préalable.
Syntaxe :
Supprimer un étudiant spécifique dans la table Etudiants.
Supprimer tous les étudiants d'un département particulier.
Supprimer toutes les données de la table Commandes.
Toutes les lignes de la table Étudiants sont supprimées, mais la structure de la table est
conservée.
Toujours utiliser une condition WHERE, sans condition, toutes les lignes de la table seront
supprimées.
Pr. Zahra OUGHANNOU 49
Manipulation des Données avec LMD
Suppression complète avec DELETE et TRUNCATE
Pour supprimer toutes les lignes de la table Etudiants, utilisez simplement :
Si vous voulez supprimer toutes les lignes de la table Etudiants, mais de manière plus rapide,
utilisez TRUNCATE :
Après un DELETE :
Les données sont supprimées, mais le compteur d'auto-incrémentation (IDENTITY) continue à
partir de la dernière valeur utilisée.
Si le dernier ID était 4, le prochain serait 5.
Après un TRUNCATE :
Les données sont supprimées, et le compteur d'auto-incrémentation (IDENTITY) est réinitialisé.
Le prochain ID sera 1.
Pr. Zahra OUGHANNOU 50
Manipulation des Données avec LMD
Les transactions en SQL Server
Une transaction en SQL Server est un mécanisme qui permet d'exécuter un ensemble de
commandes SQL comme une unité de travail unique. Cela garantit que toutes les opérations de la
transaction sont effectuées (ou validées) ou que, si une erreur survient, aucune des opérations n'est
appliquée (tout est annulé).
Syntaxe :
Exemple : Transférer 200 unités du compte 1 au compte 2.
Les deux UPDATE sont traités comme une seule
unité de travail.
Si une erreur survient (par exemple, si le compte 1 n'a
pas assez de solde), la commande ROLLBACK annule
toutes les modifications.
Pr. Zahra OUGHANNOU 51
Modification de structures avec LDD
Exemple complet avec vérification du
solde et ROLLBACK
Vérification du solde :
• Avant d'effectuer les mises à jour, une requête SELECT
vérifie si le solde du compte 1 est supérieur ou égal au
montant à transférer (200 unités).
• Si le solde est suffisant, le code dans le bloc BEGIN ...
END est exécuté.
Mises à jour (débit/crédit) :
• Si la condition est remplie, le montant est débité du
compte 1 et crédité sur le compte 2.
• La transaction est ensuite validée avec COMMIT.
Annulation avec ROLLBACK :
• Si le solde est insuffisant, la commande ROLLBACK
annule toutes les modifications éventuelles effectuées
dans la transaction (aucune ligne n’est mise à jour).
Messages utilisateur (PRINT) :
• Pour indiquer le résultat de la transaction, un message
est affiché pour confirmer si elle a été réussie ou
annulée.
Pr. Zahra OUGHANNOU 52