0% ont trouvé ce document utile (0 vote)
2 vues21 pages

Cours BD SQL

Le document traite des bases de données et du langage SQL, en abordant les principes de conception des bases de données relationnelles, les algorithmes de normalisation, et les contraintes d'intégrité. Il présente également le langage SQL, ses catégories de commandes, ainsi que l'administration des bases de données, y compris la gestion des accès, la sécurité, et la sauvegarde. Enfin, il propose un projet de conception d'une base de données pour une banque, illustrant l'application pratique des concepts présentés.

Transféré par

petnkeunjeutchou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues21 pages

Cours BD SQL

Le document traite des bases de données et du langage SQL, en abordant les principes de conception des bases de données relationnelles, les algorithmes de normalisation, et les contraintes d'intégrité. Il présente également le langage SQL, ses catégories de commandes, ainsi que l'administration des bases de données, y compris la gestion des accès, la sécurité, et la sauvegarde. Enfin, il propose un projet de conception d'une base de données pour une banque, illustrant l'application pratique des concepts présentés.

Transféré par

petnkeunjeutchou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Bases de Données et Sql MOUOMENE

Bases de Données et Sql

Par :
MOUOMENE FABIEN

P a g e 1 | 21
Bases de Données et Sql MOUOMENE

Chapitre1:
Principes de Conception des Bases de Données Relationnelles
Objectifs du Chapitre

● Comprendre les dépendances fonctionnelles et leur rôle dans la structuration des


données.
● Appliquer les algorithmes de normalisation pour améliorer la qualité des schémas.
● Maîtriser les formes normales (1FN à 5FN).
● Intégrer les contraintes d’intégrité pour garantir la fiabilité des données.

I. Dépendances Fonctionnelles
Définition

Une dépendance fonctionnelle (DF) est une relation logique entre deux ensembles
d’attributs. Elle exprime que la connaissance d’un attribut (ou d’un groupe d’attributs) permet
de déterminer un autre attribut.

Notation : Si A → B, alors la valeur de A détermine la valeur de B.

Exemple

Dans une table EMPLOYÉ(ID, Nom, Service), la dépendance fonctionnelle est : ID → Nom,
Service

Cela signifie que chaque ID correspond à un seul nom et un seul service.

Types de dépendances

● Simple : A → B
● Composée : (A, B) → C
● Partielle : une partie de la clé détermine un attribut
● Transitive : A → B et B → C ⇒ A → C

II. Algorithmes de Normalisation


La normalisation est un processus de transformation des relations pour :

● Éliminer les redondances


● Éviter les anomalies de mise à jour
● Améliorer la cohérence

Étapes générales

P a g e 2 | 21
Bases de Données et Sql MOUOMENE

1. Identifier les DF
2. Déterminer la clé primaire
3. Appliquer les règles des formes normales
4. Décomposer les relations si nécessaire

Méthodologie

● Analyse des DF
● Décomposition en relations plus simples
● Vérification de la préservation des DF
● Vérification de la non-perte d’information

III. Les Formes Normales


1FN : Première Forme Normale

● Valeurs atomiques
● Suppression des groupes répétitifs

Exemple : | ID | Nom | Téléphones | ❌→ devient | ID | Nom | Téléphone | ✅

2FN : Deuxième Forme Normale

● Être en 1FN
● Éliminer les dépendances partielles

Exemple : Une table avec clé composée (ID_Commande, ID_Client) et attribut Nom_Client
→ dépendance partielle

3FN : Troisième Forme Normale

● Être en 2FN
● Éliminer les dépendances transitives

Exemple : ID_Employé → ID_Service → Nom_Service ⇒ ID_Employé → Nom_Service ⇒

4FN : Quatrième Forme Normale

● Être en 3FN
● Éliminer les dépendances multivaluées

Exemple : Un professeur enseigne plusieurs cours et parle plusieurs langues → deux


dépendances indépendantes

5FN : Cinquième Forme Normale

● Être en 4FN
● Éliminer les dépendances de jointure

P a g e 3 | 21
Bases de Données et Sql MOUOMENE

Exemple : Vendeur, Produit, Client → peut être reconstruit à partir de relations binaires

IV. Contraintes d’Intégrité


1. Contraintes Statiques

Appliquées directement sur les données stockées.

Types :

● Clé primaire
● Clé étrangère
● UNIQUE
● NOT NULL
● CHECK

2. Contraintes Dynamiques

Appliquées lors des opérations de modification.

Exemples :

● Interdire la suppression d’un client ayant des commandes


● Vérifier la validité d’un champ avant insertion

3. Contraintes liées à la Transaction

Principes ACID :

● Atomicité : tout ou rien


● Cohérence : état valide avant et après
● Isolation : transactions indépendantes
● Durabilité : données persistantes après validation

Activités Pédagogiques
1. Identifier les DF dans une base fictive
2. Normaliser une table jusqu’à la 3FN
3. Implémenter les contraintes dans MySQL
4. Simuler des transactions concurrentes

P a g e 4 | 21
Bases de Données et Sql MOUOMENE

Chapitre2 : Langage SQL


Objectifs du Chapitre
● Comprendre la structure et la syntaxe du langage SQL.
● Maîtriser les commandes de définition, manipulation, contrôle et requête des
données.
● Savoir créer, modifier et interroger des bases de données relationnelles.
● Appliquer SQL dans des environnements comme MySQL, MS Access, PostgreSQL,
SQL Server.
● Préparer les bases pour l’administration des bases de données.

I. Introduction au Langage SQL


Définition

SQL (Structured Query Language) est un langage standard utilisé pour interagir avec les
bases de données relationnelles. Il permet de :

● Créer et modifier la structure des bases de données.


● Insérer, mettre à jour, supprimer et interroger les données.
● Gérer les droits d’accès et la sécurité.
● Contrôler les transactions et l’intégrité des données.

SQL est déclaratif, ce qui signifie qu’on décrit ce que l’on veut obtenir, sans spécifier
comment le système doit le faire.

II. Catégories de Commandes SQL


SQL est divisé en plusieurs sous-langages, chacun ayant un rôle spécifique :

Catégorie Nom Fonction principale

DDL Data Definition Language Définir la structure des bases

DML Data Manipulation Language Manipuler les données

DCL Data Control Language Gérer les droits d’accès

TCL Transaction Control Language Gérer les transactions

P a g e 5 | 21
Bases de Données et Sql MOUOMENE

DQL Data Query Language Interroger les données

III. DDL – Data Definition Language


 CREATE

Crée une nouvelle base ou une table.

sql
CREATE TABLE Clients (
ID_Client INT PRIMARY KEY,
Nom VARCHAR(100),
Adresse TEXT
);

 ALTER

Modifie la structure d’une table existante.

sql
ALTER TABLE Clients ADD Email VARCHAR(100);

 DROP

Supprime une table ou une base.

sql
DROP TABLE Clients;

IV. DML – Data Manipulation Language


 INSERT

Ajoute des données dans une table.

sql
INSERT INTO Clients VALUES (1, 'Nguea', 'Douala', 'nguea@[Link]');

 UPDATE

Modifie des données existantes.

P a g e 6 | 21
Bases de Données et Sql MOUOMENE

sql
UPDATE Clients SET Adresse = 'Yaoundé' WHERE ID_Client = 1;

 DELETE

Supprime des données.

sql
DELETE FROM Clients WHERE ID_Client = 2;

V. DQL – Data Query Language


 SELECT

Permet d’interroger les données.

sql
SELECT Nom, Adresse FROM Clients WHERE Ville = 'Douala';

 Clauses utiles :

● WHERE : filtre les résultats


● ORDER BY : trie les résultats
● GROUP BY : regroupe les données
● HAVING : filtre les groupes
● JOIN : combine plusieurs tables

 Exemple de jointure :
sql
SELECT [Link], [Link]
FROM Clients
JOIN Commandes ON Clients.ID_Client = Commandes.ID_Client;

VI. DCL – Data Control Language


 GRANT

Attribue des droits à un utilisateur.

sql
GRANT SELECT ON Clients TO Employe;

P a g e 7 | 21
Bases de Données et Sql MOUOMENE

 REVOKE

Retire des droits.

sql
REVOKE UPDATE ON Clients FROM Employe;

VII. TCL – Transaction Control Language


 BEGIN / COMMIT / ROLLBACK
sql
BEGIN;
UPDATE Stock SET Quantité = Quantité - 1 WHERE ID_Produit = 101;
COMMIT;

Si une erreur survient :

sql
ROLLBACK;

VIII. Fonctions SQL


● Fonctions d’agrégation : COUNT(), SUM(), AVG(), MAX(), MIN()
● Fonctions de chaîne : CONCAT(), SUBSTRING(), LENGTH()
● Fonctions de date : NOW(), DATE(), YEAR(), MONTH()

IX. Travaux Pratiques Recommandés


1. TP 1 : Création d’une base de données
○ Tables : Clients, Produits, Commandes
○ Relations : Clés primaires et étrangères
2. TP 2 : Requêtes SQL
○ Sélection simple et conditionnelle
○ Jointures internes et externes
○ Agrégats et regroupements
3. TP 3 : Administration
○ Création d’utilisateurs
○ Attribution de privilèges
○ Sauvegarde et restauration
4. TP 4 : Transactions
○ Simulation de commandes
○ Gestion des erreurs et annulations

P a g e 8 | 21
Bases de Données et Sql MOUOMENE

Chapitre3 :

Administration des Bases de Données


Objectifs du Chapitre
● Comprendre les rôles et responsabilités d’un administrateur de base de données
(DBA).
● Maîtriser les aspects techniques liés à l’implantation physique des données.
● Gérer les accès concurrents et assurer la résistance aux pannes.
● Mettre en œuvre des stratégies de sécurité, de sauvegarde et de restauration.
● Administrer des bases réparties et optimiser les performances du système.

I. Implantation Physique des Données


Définition

L’implantation physique désigne la manière dont les données sont stockées sur les supports
physiques (disques durs, SSD, etc.) par le SGBD.

Structure de fichiers

● Fichiers de données : contiennent les tables, index, vues…


● Fichiers journaux (log) : enregistrent les transactions pour la récupération.
● Fichiers temporaires : utilisés pour les opérations intermédiaires.

Index

Les index améliorent la rapidité d’accès aux données.

Types d’index :

● Index B-tree : structure équilibrée pour les recherches rapides.


● Index bitmap : efficace pour les colonnes à faible cardinalité.
● Index composite : basé sur plusieurs colonnes.

Exemple :

sql
CREATE INDEX idx_nom ON Clients(Nom);

P a g e 9 | 21
Bases de Données et Sql MOUOMENE

II. Contrôle des Accès Concurrents


Problématique

Lorsque plusieurs utilisateurs accèdent simultanément à la base, des conflits peuvent


survenir (lecture/écriture).

Solutions

● Verrouillage (locking) :
○ Verrouillage partagé (lecture)
○ Verrouillage exclusif (écriture)
● Isolation des transactions :
○ READ UNCOMMITTED
○ READ COMMITTED
○ REPEATABLE READ
○ SERIALIZABLE

Exemple

Deux utilisateurs modifient le stock d’un produit → verrouillage nécessaire pour éviter les
incohérences.

III. Résistance aux Pannes


Types de pannes

● Panne matérielle : disque dur, alimentation…


● Panne logicielle : bug du SGBD
● Panne humaine : suppression accidentelle

Mécanismes de protection

● Journalisation : enregistrement des transactions


● Points de contrôle (checkpoints) : sauvegarde intermédiaire
● Réplication : copie des données sur plusieurs serveurs

IV. Protection et Sécurité des Données


Objectifs

● Prévenir les accès non autorisés


● Garantir la confidentialité et l’intégrité

Moyens

P a g e 10 | 21
Bases de Données et Sql MOUOMENE

● Authentification : identifiants, mots de passe


● Autorisation : rôles et privilèges
● Chiffrement : cryptage des données sensibles
● Audit : traçabilité des actions

Exemple :

sql
GRANT SELECT ON Clients TO Employe;
REVOKE DELETE ON Clients FROM Employe;

V. Paramétrage, Démarrage, Arrêt, Sauvegarde,


Restauration
Paramétrage

● Configuration du serveur (ports, mémoire, cache)


● Définition des variables système

Démarrage / Arrêt

● Commandes pour lancer ou arrêter le service SGBD


● Surveillance des logs

Sauvegarde

● Sauvegarde complète : toutes les données


● Sauvegarde incrémentale : uniquement les modifications
● Sauvegarde logique : export SQL
● Sauvegarde physique : copie des fichiers

Restauration

● Récupération après panne


● Test de validité des sauvegardes

VI. Bases de Données Réparties et Traitement Réparti


Bases réparties

Les données sont stockées sur plusieurs sites géographiques.

Avantages :

● Disponibilité accrue

P a g e 11 | 21
Bases de Données et Sql MOUOMENE

● Réduction des temps d’accès


● Tolérance aux pannes

Traitement réparti

Les requêtes sont exécutées sur plusieurs serveurs.

Exemple : Un client interroge une base à Douala, les données sont réparties entre Yaoundé
et Bafoussam.

VII. Audit et Optimisation


Audit

● Analyse des accès


● Détection des anomalies
● Suivi des modifications

Optimisation

● Analyse des requêtes lentes


● Utilisation des index
● Réorganisation des tables
● Mise en cache des résultats

Outils :

● EXPLAIN (MySQL)
● SQL Profiler (SQL Server)
● AWR (Oracle)

Activités Pédagogiques Recommandées


1. TP 1 : Création d’index et analyse de performance
2. TP 2 : Simulation de pannes et restauration
3. TP 3 : Paramétrage d’un serveur MySQL
4. TP 4 : Mise en place d’un système de réplication
5. TP 5 : Audit des accès et des modifications

P a g e 12 | 21
Bases de Données et Sql MOUOMENE

Chapitre4 : Projet

🎯 Objectif

Concevoir une base de données relationnelle permettant de gérer les opérations courantes
d’une banque : gestion des clients, des comptes, des transactions, des prêts et des employés.
L’objectif est de garantir la cohérence, la sécurité et la traçabilité des données, tout en
facilitant les requêtes analytiques et opérationnelles.

Figure : Interface utilisateur de Fabien Bank : tableau de bord bancaire

Explication de l’image
L’image représente l’interface graphique d’une application bancaire moderne nommée
Fabien Bank, conçue pour faciliter la gestion des opérations courantes par les clients et les
employés. Elle est divisée en deux zones principales : une barre latérale sombre à gauche et
une zone de contenu claire à droite.

P a g e 13 | 21
Bases de Données et Sql MOUOMENE

Barre latérale (navigation)

 Logo Fabien Bank en haut, avec une icône stylisée et le nom en blanc.
 Menu vertical avec cinq sections :
o Tableau de bord : vue d’ensemble des opérations.
o Comptes : accès aux comptes bancaires du client.
o Transactions : historique des opérations (dépôts, retraits).
o Prêts : gestion des crédits contractés.
o Employés : suivi des agents bancaires.

Chaque élément est accompagné d’une icône intuitive (grille, portefeuille, carte, maison,
badge), facilitant la navigation.

Zone principale (contenu dynamique)

Salutation personnalisée

 Message d’accueil : “Salut, Jean Dup 👋”, renforçant l’aspect humain et


personnalisé de l’interface.

Informations de compte

 Affichage du numéro de compte (#3250987) et du solde actuel : $31,024.40, mis en


évidence en haut à droite.
 Lien “Voir tout” pour accéder à l’historique complet du compte.

Opérations bancaires

Deux encadrés côte à côte permettent d’effectuer des actions :

➕ Dépôt

 Icône flèche vers le bas.


 Champs :
o Montant (pré-rempli à 0,00)
o Compte (champ libre)
 Bouton bleu “Dépôt”

➖ Retrait

 Icône flèche vers le haut.


 Champs :
o Montant
o Compte
 Bouton bleu “Retrait”

Ces formulaires sont simples, épurés et conçus pour une saisie rapide.

P a g e 14 | 21
Bases de Données et Sql MOUOMENE

Section analytique : Solde Clients

 Titre : “Solde Clients”


 Menu déroulant : “Sélection…” pour filtrer les données.
 Tableau des transactions :
o Colonnes : ID transaction, Compte #, Type, Montant
o Types d’opérations : Dépôt, Retrait
o Montants affichés en gras pour plus de lisibilité

Design et ergonomie

 Palette de couleurs : gris foncé, blanc, bleu → moderne et professionnelle.


 Typographie claire, boutons bien espacés, icônes cohérentes.
 Interface responsive et intuitive, adaptée à une utilisation web ou mobile.

Solution
1. Modèle conceptuel (MCD)

Entités principales :

 Client : informations personnelles


 Compte : type, solde, date d’ouverture
 Transaction : montant, type, date
 Prêt : montant, taux, échéance
 Employé : gestion des clients et des prêts
 Agence : rattachement des comptes et employés

Relations clés :

 Un client peut avoir plusieurs comptes.


 Un compte peut avoir plusieurs transactions.
 Un client peut contracter plusieurs prêts.
 Un employé peut gérer plusieurs clients.
 Une agence regroupe plusieurs comptes et employés.

2. Modèle logique (tables SQL)

a. Table Client
sql
CREATE TABLE Client (
id_client INT PRIMARY KEY,
nom VARCHAR(50),
prenom VARCHAR(50),
date_naissance DATE,
adresse VARCHAR(100),

P a g e 15 | 21
Bases de Données et Sql MOUOMENE

telephone VARCHAR(15),
email VARCHAR(100)
);

b. Table Compte
sql
CREATE TABLE Compte (
id_compte INT PRIMARY KEY,
type_compte VARCHAR(20),
solde DECIMAL(10,2),
date_ouverture DATE,
id_client INT,
id_agence INT,
FOREIGN KEY (id_client) REFERENCES Client(id_client),
FOREIGN KEY (id_agence) REFERENCES Agence(id_agence)
);

c. Table Transaction
sql
CREATE TABLE Transaction (
id_transaction INT PRIMARY KEY,
id_compte INT,
type_transaction VARCHAR(20),
montant DECIMAL(10,2),
date_transaction DATE,
FOREIGN KEY (id_compte) REFERENCES Compte(id_compte)
);

d. Table Pret
sql
CREATE TABLE Pret (
id_pret INT PRIMARY KEY,
montant DECIMAL(10,2),
taux FLOAT,
duree_mois INT,
id_client INT,
id_employe INT,
FOREIGN KEY (id_client) REFERENCES Client(id_client),
FOREIGN KEY (id_employe) REFERENCES Employe(id_employe)
);

e. Table Employe
sql
CREATE TABLE Employe (
id_employe INT PRIMARY KEY,
nom VARCHAR(50),
prenom VARCHAR(50),
poste VARCHAR(30),
id_agence INT,
FOREIGN KEY (id_agence) REFERENCES Agence(id_agence)
);

P a g e 16 | 21
Bases de Données et Sql MOUOMENE

f. Table Agence
sql
CREATE TABLE Agence (
id_agence INT PRIMARY KEY,
nom_agence VARCHAR(50),
adresse VARCHAR(100),
ville VARCHAR(50)
);

🔍 3. Requêtes SQL utiles

a. Liste des comptes d’un client


sql
SELECT nom, prenom, type_compte, solde
FROM Client
JOIN Compte ON Client.id_client = Compte.id_client
WHERE Client.id_client = 101;

b. Historique des transactions d’un compte


sql
SELECT type_transaction, montant, date_transaction
FROM Transaction
WHERE id_compte = 2001
ORDER BY date_transaction DESC;

c. Total des prêts par client


sql
SELECT [Link], [Link], SUM([Link]) AS total_pret
FROM Client
JOIN Pret ON Client.id_client = Pret.id_client
GROUP BY Client.id_client;

4. Sécurité et intégrité

 Utilisation de contraintes (PRIMARY KEY, FOREIGN KEY, CHECK).


 Gestion des droits d’accès via SQL GRANT/REVOKE.
 Sauvegarde régulière de la base.
 Journalisation des transactions sensibles.

5. Extensions possibles

 Ajout d’un module de gestion des cartes bancaires.


 Intégration d’un système de notifications par email/SMS.
 Création d’une interface web avec PHP/[Link] pour interagir avec la base.
 Analyse prédictive des comportements clients via SQL + Python.

P a g e 17 | 21
Bases de Données et Sql MOUOMENE

Requêtes SQL les plus couramment utilisées


dans une base de données bancaire

1. Requête : Liste des comptes d’un client


sql
SELECT c.id_compte, c.type_compte, [Link]
FROM Compte c
JOIN Client cl ON c.id_client = cl.id_client
WHERE cl.id_client = 101;

Explication : Cette requête affiche tous les comptes associés à un client donné (ici, client
n°101), avec le type de compte et le solde. Utile pour les conseillers bancaires ou les
interfaces client.

2. Requête : Historique des transactions d’un compte


sql
SELECT t.id_transaction, t.type_transaction, [Link], t.date_transaction
FROM Transaction t
WHERE t.id_compte = 2001
ORDER BY t.date_transaction DESC;

Explication : Affiche toutes les opérations (dépôts, retraits, virements) effectuées sur le
compte n°2001, triées par date décroissante. Indispensable pour les relevés bancaires.

3. Requête : Solde total par client


sql
SELECT cl.id_client, [Link], [Link], SUM([Link]) AS solde_total
FROM Client cl
JOIN Compte c ON cl.id_client = c.id_client
GROUP BY cl.id_client, [Link], [Link];

🔍 Explication : Calcule le solde cumulé de tous les comptes d’un client. Utile pour les
analyses de patrimoine ou les évaluations de solvabilité.

4. Requête : Total des prêts par client


sql
SELECT cl.id_client, [Link], [Link], SUM([Link]) AS total_pret
FROM Client cl
JOIN Pret p ON cl.id_client = p.id_client
GROUP BY cl.id_client, [Link], [Link];

P a g e 18 | 21
Bases de Données et Sql MOUOMENE

🔍 Explication : Permet de connaître le montant total emprunté par chaque client. Utile pour
le suivi du risque crédit.

5. Requête : Nombre de clients par agence


sql
SELECT a.nom_agence, COUNT(DISTINCT cl.id_client) AS nb_clients
FROM Agence a
JOIN Compte c ON a.id_agence = c.id_agence
JOIN Client cl ON c.id_client = cl.id_client
GROUP BY a.nom_agence;

Explication : Donne une vue du nombre de clients par agence, en se basant sur les comptes
ouverts. Utile pour le pilotage commercial.

6. Requête : Employés gérant des prêts


sql
SELECT [Link], [Link], COUNT(p.id_pret) AS nb_prets
FROM Employe e
JOIN Pret p ON e.id_employe = p.id_employe
GROUP BY e.id_employe, [Link], [Link];

Explication : Affiche le nombre de prêts gérés par chaque employé. Utile pour la répartition
des tâches ou les évaluations de performance.

7. Requête : Vérification de dépassement de solde


sql
SELECT id_compte, solde
FROM Compte
WHERE solde < 0;

🔍 Explication : Identifie les comptes en découvert. Crucial pour les alertes automatiques et
les politiques de gestion du risque.

8. Requête : Prêts arrivant à échéance ce mois-ci


sql
SELECT id_pret, montant, duree_mois, taux
FROM Pret
WHERE DATE_ADD(date_emission, INTERVAL duree_mois MONTH) BETWEEN CURDATE()
AND LAST_DAY(CURDATE());

🔍 Explication : Liste les prêts dont la date d’échéance tombe dans le mois en cours. Utile
pour les relances et les prévisions de remboursement.

P a g e 19 | 21
Bases de Données et Sql MOUOMENE

Création de vues SQL


a. Vue : Solde total par client
sql
CREATE VIEW vue_solde_total_client AS
SELECT cl.id_client, [Link], [Link], SUM([Link]) AS solde_total
FROM Client cl
JOIN Compte c ON cl.id_client = c.id_client
GROUP BY cl.id_client, [Link], [Link];

➡️ Utilisation :

sql
SELECT * FROM vue_solde_total_client WHERE solde_total > 10000;

b. Vue : Historique des transactions


sql
CREATE VIEW vue_transactions_compte AS
SELECT t.id_transaction, t.id_compte, t.type_transaction, [Link],
t.date_transaction
FROM Transaction t
ORDER BY t.date_transaction DESC;

➡️ Utilisation :

sql
SELECT * FROM vue_transactions_compte WHERE id_compte = 2001;

2. Procédures stockées

a. Procédure : Dépôt sur un compte


sql
DELIMITER //

CREATE PROCEDURE deposer_sur_compte(


IN compte_id INT,
IN montant DECIMAL(10,2)
)
BEGIN
UPDATE Compte
SET solde = solde + montant
WHERE id_compte = compte_id;

INSERT INTO Transaction(id_compte, type_transaction, montant,


date_transaction)
VALUES (compte_id, 'Dépôt', montant, CURDATE());
END //

DELIMITER ;

P a g e 20 | 21
Bases de Données et Sql MOUOMENE

➡️ Utilisation :

sql
CALL deposer_sur_compte(2001, 500.00);

b. Procédure : Retrait avec vérification de solde


sql
DELIMITER //

CREATE PROCEDURE retirer_du_compte(


IN compte_id INT,
IN montant DECIMAL(10,2)
)
BEGIN
DECLARE solde_actuel DECIMAL(10,2);

SELECT solde INTO solde_actuel FROM Compte WHERE id_compte = compte_id;

IF solde_actuel >= montant THEN


UPDATE Compte
SET solde = solde - montant
WHERE id_compte = compte_id;

INSERT INTO Transaction(id_compte, type_transaction, montant,


date_transaction)
VALUES (compte_id, 'Retrait', montant, CURDATE());
ELSE
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Solde insuffisant pour effectuer le retrait.';
END IF;
END //

DELIMITER ;

➡️ Utilisation :

sql
CALL retirer_du_compte(2001, 300.00);

P a g e 21 | 21

Vous aimerez peut-être aussi