TECHNOLOGIES DE L’INFORMATION ET DE LA
COMMUNICATION -GABON
COURS DE
BASE DE DONNEES
RELATIONNELLES ET
LANGAGE SQL
(CONCEPTION, IMPLANTATION ET MANIPULATION)
Plan du cours
Objectifs
Introduction
1) Bref Historique
6) Principe de Normalisation
2
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Objectifs du cours
Pourquoi ?
Savoir ce qu’est un SGBD et les différents type ;
Connaitre les différents type de Base de données ;
Savoir concevoir une base de données relationnelle ;
Manipuler une base de données relationnelle ;
Connaitre l’algèbre relationnelle ;
Faire de la programmation dans une base de données.
Comment ?
Aborder les phases de conception, création, manipulation et
programmer d’un SGBDR et Base de données Relationnelle ;
Etre sensibilité aux aspects matériels et logiciels.
3
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Introduction
Depuis les années 60, l’utilisation des bases de données s’est
largementrépandue sur toutes les gammes d’ordinateurs, et à l’heure actuelle,
les Système de Gestion des Bases de Données Relationnelle (SGBDR) sont
les plus utilisés (Plus de 80% des systèmes existants).
Ce cours présente les concepts des bases de données et met surtout l’accent
sur la conception et la manipulation et la programmation
des bases de données relationnelles.
Compte tenu du public visé (licence 3 En Informatique), le cours a été avancé
afin qu’il soit accessible à toute personne désirant comprendre, concevoir et
manipuler les bases de données relationnelles. Ce qui explique que certains
aspects tel que le PL/SQL soient abordés.
4
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
1) Bref Historique
1970 : Proposition d’Edgard Franck Codd (IBM)
Modèle mathématique basé sur la théorie des ensembles.
Article: A relational model of data for large shared Data Banks
(CACM) en 1970;
Dans le cadre du test pour verifier si votre SGBD est
Relationnel ou pas, il publia via ACR : «Is Your DBMS Really
Relational? » et « Does Your DBMS run by the rules ?» en
1985.
1977 : Langage SEQUEL, qui deviendra SQL (Structure Query
Language)
1979 : Premier SGBDR commercial (Oracle V2)
Commercialisé par Relational Software, fondée par larry
Ellison.
1986 : SQL-86 selon American National Standard institute (ANSI)
1987 : SQL-87 par ISO
1989 : SQL-89 (ISO/CEI 9075 : 1989, appélé SQL1)
1992, 1999, 2003,2008, et 2011 : SQL2, SQL3, SQL-2003, SQL-208,
SQL-2011.
Le respect des normes varie selon le logiciel SGBDR considéré. Et les SGBDR
constituent aujourd’hui la majorité des SGBD disponibles.
5
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
6
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Données SGBD
Données
7
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
8
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Modèle relationnel ;
Modèle de base de données hiérarchique ;
Modèle réseau ;
Modèle de base de données orientée objet ;
Modèle entité-association ;
Modèle document ;
Modèle entité-attribut-valeur ;
Schéma en étoile ;
Le modèle relationnel-objet, qui associe les deux éléments qui
composent son nom ;
Vous pouvez choisir de représenter une base de données selon l'un de ces
modèles en fonction de plusieurs facteurs. Le plus important est de savoir si
le système de gestion de base de données que vous utilisez prend en charge
un modèle particulier. En effet, la plupart sont pensés pour un modèle de
base de données particulier et exigent des utilisateurs qu'ils adoptent ce
modèle, mais certains prennent en charge plusieurs modèles.
Vous devez également choisir un modèle dont les points forts correspondent à
vos priorités pour la base de données, que ces priorités soient la rapidité, la
réduction des coûts, la simplicité d'utilisation ou autre chose.
Examinons de plus près certains des modèles de bases de données les plus
courants.
Chaque ligne, également appelée tuple, comprend des données sur une
instance spécifique de l'entité en question, comme un employé en
particulier.
9
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Le modèle tient également compte des types de relations entre ces tables,
notamment les relations un-à-un, un-à-plusieurs et plusieurs-à-plusieurs.
On peut représenter les tables d’une base de données relation via le
Modèle Logique de Données :
Clients Commandes
s
-Numclient -Ncommande
-Nomclient -Datecomd
-Prenomclient -#Numclient
-……….. -…………
Il a surtout été utilisé par les systèmes de gestion d'information d'IBM dans
les années 60 et 70, qui ont aujourd'hui majoritairement disparu en raison
de certaines inefficacités opérationnelles.
10
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Son pic de popularité remonte aux années 70, après qu'il a été
officiellement défini par la conférence sur les langages de systèmes de
traitement de données (Conference on Data Systems Languages,
CODASYL)
Exemple représentation :
Une base de données multimédia réunit des médias, tels que des
images, qui ne peuvent pas être stockés dans une base de données
relationnelle.
11
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
toutefois s'y limiter. Ces modèles sont aussi connus sous le nom de
modèles de bases de données hybrides.
Ce modèle reproduit les relations entre les entités du monde réel de façon
très similaire au modèle réseau, mais il n'est pas lié aussi directement à
la structure physique de la base de données. Il est souvent utilisé pour la
création d'une base de données d'un point de vue conceptuel.
Ici, les personnes, les lieux et les objets à propos desquels les points de
données sont stockés sont appelés entités, chacune d'entre elles
possédant certains attributs qui, ensemble, composent leur domaine. On
schématise aussi la cardinalité (relations entre les entités).
Exemple schéma :
12
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Une base de données créée selon une structure de fichier inversé est
conçue pour accélérer les recherches en texte intégral. Dans ce modèle,
le contenu des données est indexé sous la forme d'une série de clés dans
une table de recherche, dont les valeurs indiquent l'emplacement des
fichiers associés. Cette structure peut fournir des rapports quasi
instantanés dans le domaine des Big Data ou de l'analytique, par
exemple.
13
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Ce modèle divise tous les points de données selon qu'ils décrivent une
entité ou une association. Dans ce modèle, une entité désigne tout
élément qui existe de façon indépendante, alors qu'une association
désigne tout élément qui n'existe que par rapport à un autre élément.
Le modèle d'association structure les données en deux ensembles :
Un ensemble d'éléments, chacun ayant un identificateur unique, un
nom et un type
Un ensemble de liens, chacun ayant un identificateur unique et les
identificateurs uniques d'une source, d'un verbe et d'une cible. Le
fait stocké est en lien avec la source, et chacun des trois
identificateurs peut faire référence soit à un lien, soit à un élément.
14
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
15
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
ETUDIANT
Nom NumeroEtudiant Classe Dominante
COURS
NomCours NumeroCours HeuresCours Departement
PREREQUIS
NumeroCours NumeroPrerequis
UV
IDUV NumeroCours Trimestre Annee Enseignant
ETAT_NOTES
NumeroEtudiant IDUV Note
Diagramme schématique
Domaine de l’attribut
Nom : chaîne de caractères
Extension d’une relation (ou instance): ensemble de ses n-uplets
DB relationnelle: ensemble de relations (variables dans le temps)
Schéma relationnel: ensemble des schémas des relations de la BD
16
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
17
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
o Langage algébrique
Un ensemble d'opérateurs sur des relations et
produisant de nouvelles relations.
Construire de nouvelles informations à partir des
relations de départ et d'une composition séquentielle
d'opérateurs.
o Les Operateurs
Opérateurs binaires Opérateurs binaires
Opérateurs unaires
(schémas différents) (relations de même schéma)
produit
Projection cartésien
union
thêta-jointure
intersection
division
différence
Sélection
Opérateurs unaires
Projection
Signature: relation x liste d’attributs → relation
Notation: proj(R,Y) ou Πy(R) = S(y) tel que:
Définition informelle:
La relation S est formée par les colonnes Y de la
relation R.
Exemple de base de données avec l’opérateur unaire :
Produit(prod_id, nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id, qte)
Schema 1.1
18
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Example de projection:
Donner les noms des produits ?
Sélection
Signature: relation x expression logique →
relation
Notation: select (R,E) ou σ E(R) ou σ (R,E)
Le résultat a le même schéma que la
relation R et chaque n-uplets du résultat
vérifie l’expression E.
E : Condition booléenne, simple ou
composé
– Simple nom_attribut op nom_attribut |
nom_attribut op constante
– Op est un opérateur de comparaison
(>,>,=,<>,>=,<=)
– Composé si E1, E2 sont des expressions
logiques et est un connecteur logique and
or et not est une expression logique.
Exemple de sélection :
Les produits dont le pu est inférieur à 10?
Définition informelle:(extension T)
Ensemble des tuples obtenus par concaténation de
chaque
tuple de R avec chaque tuple de S.
NB : Attention le nombre d'éléments du produit
cartésien est le produit des cardinalités des relations R
et S!
19
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
θ-jointure
Signature: relation x relation x -θ-exp → relation
join θE-exp (R,S), join(R,S, θ -exp), R θ -exp S
θ-exp porte sur les attributs de R et S (attributs de
jointure)
θ-jointure : est équivalente à un produit cartésien suivi
d'une opération de sélection.
R join θE S = σθ E (R X S)
Exemple de theta-jointure :
Relation qui associe à chaque produit le
dépôt dans lequel il est stocké
Variantes de jointure
EQUI-JOINTURE
– θE-exp porte sur les attributs de jointure est ‘=‘
Jointure naturelle *:
– Équi-jointure suivie de la suppression des attributs
superflus.
Division
Signature: relation x relation → relation
div(R,S), R ÷ S
R(X,Y) ÷ S(Y) = T(X)
• Définition formelle:
T(X) = {<x> | ∀y, <y> ∈ S ⇒ <x,y> ∈ R}
• Définition informelle
T est la projection de R sur X restreinte aux tuples en
liaison avec tous les tuples de S
20
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
En Résumé
• 8 opérateurs:
– sélection, projection
– jointure, produit cartésien, division
– union, intersection, différence
• Ensemble minimal d’opérateurs:
– projection, sélection, produit cartésien, union,
différence
21
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Exemple :
Produit(prod_id,nom,pu)
Depot(dep_id, adr,volume)
Stock(prod_id,dep_id,qte)
AR SQL
Sélection select *
σ condition (nom de relation) from nom de relation
where condition
AR SQL
• projection-sélection
Π l_attributs (σ cond(nom de select l_attributs
relation)) from nom de relation
σ cond ( Π l_attributs (nom de where cond ;
relation) )
AR SQL
Jointure Forme 1
nom_rel1 θ-exp nom_rel2 Sans sous requête
[….] Select * from nom_rel1,
nom_rel2, […]
where θ-exp
Forme 2 SQL
Imbrication de select (ou sous-requête)
Composition jointure, sélection, projection
• Numéros et noms des produits en rupture de stock ?
Select prod_id, nom
From Produit
Where prod_id in(select prod_id from stock where
qte<=0)
23
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Exemple :
( select prod_id from Produit where pu > 100)
union
( select prod_id from Produit where pu <50)
Fonctions d’agrégation
count: cardinal ...
sum : la somme des valeurs..
avg: moyenne...
max: la valeur maximale
min: la valeur minimum
(- Ces fonctions peuvent être utilisées dans une clause select ; - Le résultat est
une valeur (pas un ensemble) ; - Toutes les fonctions ignorent les valeurs nulles
(sauf count(*) voir l ’exemple)
Produit
select count(prod_id) prod_id nom
from Produit p1 n2
----- p2 null
3 p3 n2
select count(nom)
from Produit
-----
2
select count(distinct nom)
from Produit
select count(*) /* donne le nombre des lignes dans une table*/
from Produit
24
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
En Synthèse
FROM Stock
WHERE qte <12
GROUP BY prod_id
Traduction de la division
• "Quels sont les numéros et les adresses des dépôts où sont
entreposés tous les produits (ceux connus de la base de
données)?"
• PARAPHRASE EN FRANCAIS "Un dépôt est sélectionné
s'il n'existe aucun produit qui n'ait pas été stocké par ce dépôt"
=> DOUBLE NEGATION
Exemple :
Pour ceux n'ayant aucun attrait particulier pour la
logique, voici une solution :
SELECT d. dep_id, d.adr
FROM Depot d
WHERE d.dep_id IN
(SELECT dep_id FROM Stock
GROUP BY dep_id
HAVING COUNT (*)=
(SELECT COUNT(*) FROM Produit)
);
27
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Synthèse Select :
select <liste attributs Aj et/ou expressions sur attributs Ap>
from <liste relations Ri>
where <condition sur tuples C1>
group by <liste attributs Ak>
having <condition sur groupes C2>
order by <liste attributs Al>
Un exemple complet :
• "Donnez par ordre croissant le nom et la somme des
quantités des produits, uniquement si chaque quantité
stockée est strictement supérieure à 20 ?"
Requête SQL :
SELECT p.prod_id, p.nom, Sum(s.qte)
FROM Produit p, Stock s
WHERE p.prod_id = s.prod_id
GROUP BY p.prod_id,p.nom
HAVING min(s.qte) > 20
ORDER BY p.nom
28
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Quelles contraintes :
– non nullité des valeurs d'un attribut
– unicité de la valeur d'un attribut ou d'un groupe d'attributs
– check ou validité restreint les valeurs à insérer dans une
table
Sur un attribut
Sur un ensemble d’attributs …
29
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
intégrité référentielle
– Dans la 2ème table on référence: unique ou primar key
– Quand: insert, delete, update
– Quoi faire:
Default policy: rejet des modifications
Cascade policy: propager les modifications
(delete, update)
Set-Null Policy: mettre une valeur nulle lors de
(delete, update)
– On peut choisir entre les différentes stratégies
Possibilité de:
– ajouter d’attributs, de contraintes (add)
– supprimer de contraintes (drop constraint)
– modifier de valeurs par défaut d’attributs (replace)
Restriction:
30
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
update Produit
set pu = pu * 1.1
where prod_id =150 ;
update Stock
set qte = qte + 10
where prod_id in(select prod_id
from Produit
where nom = ‘ vis ’) ;
Exemple :
Supprimer tous les tuples de Produit?
delete Produit ; (on supprime tous les tuples mais le schéma de la
relation existe toujours..)
34
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
35
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Figure 4 : Ex. d'applications des règles de passage modèle entité-association => modèle relationnel
37
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
38
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Méthodes de conception
– Pour la méthode de conception il en a MERISE, UML etc.
Dans notre cas il sera question de la méthode MERISE,
– Trois niveaux d’abstraction de représentation des
données
Niveau conceptuel
Description abstraite et globale du monde réel
– aspect statique (données)
– aspects dynamique (traitements)
=> Le schéma conceptuel
Le schéma conceptuel décrit la structure de la
base indépendamment de son implantation
Niveau logique
Prise en compte de facteurs quantitatifs
– évaluer le volume de données
– évaluer les coûts de mise en place de la BD
– Le schéma logique est issu du schéma
conceptuel + [transformations]
39
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Niveau physique
– Contraintes liées au matériel et logiciel
– Adaptation du schéma logique
– Structures de données décrites dans le LDD
– Traitements exprimés avec les outils de
manipulation du SGBD
Domaine Sous-ensemble
d’application à automatiser
Niveau Formalisme
Entité-association
Schéma conceptuel
Conceptuel sémantique
relationnel
Relationnel
Schéma logique
Logique Type CODASYL
(réseau, hiérarchique)
Dépend du SGBD
Physique Schéma physique (table, Segments,
set type..)
SGBD
40
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
6) Principe de Normalisation
6.1. Le problème
Mélanger dans une même relation des informations relatives à
plusieurs entités entraîne, en général des redondances
d’information qui provoquent les anomalies suivantes:
Anomalies d’insertion,
Anomalies de mise à jour,
Anomalies de suppression.
Exemple :
isbn titre éditeur Pays
2-212-09283-0 Bases de données – objet et relationnel Eyrolles France
2-7117-8645-5 Fondements des bases de données Vuibert USA
0-201-70872-8 Databases and Transaction Processing Addison Wesley USA
2-212-09069-2 Internet/Intranet et bases de données Eyrolles France
Cette relation qui décrit des livres et leurs éditeurs, contient des
redondances provoquant les anomalies suivantes :
insertion : il n’est pas possible d’insérer un livre sans
connaître son éditeur. Attribuer une valeur nulle aux attributs
éditeur et pays violerait l’intégrité d’entité : un attribut
appartenant à la clé, ne doit pas avoir de valeur nulle.
mise à jour : si un éditeur change de pays, il faut modifier ce
pays pour chacun des livres qu’il a édités.
suppression : si l’unique livre publié par un éditeur est
supprimé, l’information sur cet éditeur est perdue. Attribuer
une valeur nulle aux attributs isbn et titre, violerait l’intégrité
d’entité.
6.2. Solution
La solution à ces problèmes consiste à normaliser la relation
en cause en la décomposant en plusieurs relations.
Cette décomposition s’appuie sur les dépendances qui
existent entre les attributs de la relation initiale :
dépendances fonctionnelles,
dépendances multivaluées.
41
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
42
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
43
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
44
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
45
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Cette décomposition est sans perte mais ne préserve pas les dépendances fonctionnelles.
46
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
47
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
48
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
éditeur pays,
isbn auteur, isbn mot_clé,
isbn bib nb_ex}
S = {U1(isbn, titre, éditeur, pays),
U2(isbn, auteur, mot_clé, bib, nb_ex)}
S = {U1(isbn, titre, éditeur, pays),
U21(isbn, auteur),
U22(isbn, mot_clé, bib, nb_ex)}
S = {U1(isbn, titre, éditeur, pays),
U21(isbn, auteur),
U221(isbn, mot_clé),
U222(isbn, bib, nb_ex)}
S = {U11(éditeur, pays),
U12(isbn, titre, éditeur),
U21(isbn, auteur),
U221(isbn, mot_clé),
U222(isbn, bib, nb_ex)}
49
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
7.1 Introduction
PL/SQL est un langage procédural d’Oracle étendant SQL. Il
permet de combiner les avantages d’un langage de
programmation classiques avec les possibilités de
manipulation des données offertes par SQL.
Il s’agit ici de présenter succinctement PL/SQL
50
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
7.4 Opérateurs
PL/SQL supporte les opérateurs suivants :
Arithmétique : +, -, *, /, **(exponentielle)
Concaténation : ||
Parenthèses (contrôle des priorités entre opérations) : ()
Affectation : :=
Comparaison : =, <, > <=, >=, IS NULL, LIKE, BETWEEN,
IN
Logique: AND, OR, NOT
51
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
52
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Curseur explicite
4 étapes d’utilisation d’un curseur explicite :
a. Déclaration du curseur
Tout curseur doit être déclaré dans la section DECLA
RE du bloc le nom du curseur et l’ordre SELECT
associé.
Syntaxe : CURSOR nom_curseur IS ordre_select;
b. Ouverture du curseur
L’ouverture du curseur lance l’exécution de l’ordre SEL
ECT associé au curseur. L’ouverture du curseur se
fait dans la section BEGIN du bloc
Syntaxe : OPEN nom_curseur;
d. Fermeture
Après le traitement des lignes, pour libérer la place mé
moire, on ferme le curseur.
Syntaxe : CLOSE nom_curseur;
53
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
e. Curseur For
Oracle propose une variante de la boucle FOR qui déc
lare implicitement la variable de parcours, ouvre
le curseur, réalise les FETCH successif et ferme le
curseur.
Syntaxe : FOR variable IN cursor LOOP
- instructions
END LOOP;
54
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Begin
If Old-pers.Salaire > New-pers.Salaire
Then RAISE Err;
End IF;
Exception
When Err Then Raise_application-err(-20322,’Salaire erroné’);
End;
56
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
57
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Exemple :
création d’une procédure de traitement des rappels dans une
application de gestion de bibliothèque
CREATE PROCEDURE Traiter_rappel
Declare
date-du-jour Date;
nbre-jour Integer ;
Begin
date-du-jour := Sysdate;
For tuple-prêt in (Select date-prêt, date-rappel
From prêt-livre
Where date-rappel is null)
Loop
nbre-jour := Extract(day from date-du-jour - tuple-prêt.date-
prêt day(3)) ;
If nbre-jour > 10
Then
Update prêt-livre
Set tuple-prêt.date-rappel = date-du-jour
End If
End Loop
End ;
58
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon
Classe GI3 INPTIC 2020 Support de Cours BDR : présenté par M. MOMBO Levy G.
Utilisation
L’appel d’une procédure ou d’ne fonction se fait simplement par son
nom,
précédé du mot-clé EXECUTE (EXEC) ou CALL
Exemple : EXEC Traite-rappel ou CALL Traite-rappel
BEGIN
..
IF …
THEN RAISE nom_erreur ;
EXCEPTION
WHEN nom_erreur THEN …
END;
Quelques Remarques :
– Affichage
PL/SQL n’est pas un langage avec des fonctionnalités d’entrés-
Sorties évoluées. Toutefois, on peut imprimer des messages et
des valeurs de variables de plusieurs manières différentes. Le
plus pratique est de faire appel à un package prédéfini :
DBMS_OUTPUT.
En premier, taper au niveau de la ligne de commande :
SET SERVEROUTPUT ON
– Debugger
Pour chaque objet créé (procédure, fonction, trigger…), en cas
d’erreur de compilation, on peut voir ces erreurs en tapant :
SHOW ERRORS PROCEDURE nom-proc ;
60
Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon