Académique Documents
Professionnel Documents
Culture Documents
Actualité du cours
https://twitter.com/darmont_lyon2 #idsmbda
1 2
Base de données (BD) : Collection de données cohérentes et structurées Saisie Traitement Fichier
Fichier
≠
Etat de
Base de données Saisie Traitement sortie
Fichiers
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 3 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 4
3 4
1
23/08/2019
Uniformisation de la saisie
Saisie
Standardisation des traitements
Base
+ de Traitements
données Contrôle de la validité des données
Contrôles
5 6
Probléma-
Système de Gestion de Bases de Données : Logiciel(s) Indépendant d’un système
tique
Cahier des charges de gestion de BD (SGBD)
assurant structuration, stockage, maintenance, mise à
Spécifica-
jour et consultation des données d’une BD tions
Rédaction
Modèle
conceptuel
Exemples Analyse Famille de SGBD
Spécifique
– SGBD « bureautiques » : Access, Base, Filemaker, Paradox… Modèle
logique
SGBD particulier
– SGBD serveurs : Oracle, DB2, SQL Server, PostgreSQL, MySQL, Traduction
MariaDB… Modèle
physique
Traduction
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 7 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 8
7 8
2
23/08/2019
Plan du cours
9 10
Diagramme de classes
Représentation graphique :
11 12
3
23/08/2019
13 14
Solution : Ajouter un attribut numéro d’étudiant ! Le numéro d’étudiant est un attribut identifiant.
NumEtu Nom Prénom DateNaiss Un identifiant caractérise de façon unique les instances
1110 Dupont Albertine 01/06/1993 d’une classe.
2002 West James 03/09/1994
3333 Martin Marie 05/06/1995 Convention graphique :
4042 Durand Rachid 05/11/1995 NB : Ne pas confondre avec
5552 Titgoutte Justine 28/02/1996 les attributs de classe UML
6789 Dupont Noémie 18/09/1995 dont c’est la notation usuelle
7000 Dupont Albert 23/05/1990
15 16
4
23/08/2019
Association : liaison perçue entre des classes Une classe peut être associée à elle-même, chaque
ex. Les étudiant·es passent des épreuves. instance pouvant jouer plusieurs rôles dans l’association.
ex. Employés et supérieurs hiérarchiques
17 18
Définition : Indicateur qui montre combien d’instances ex. Un·e étudiant·e possède une et une seule carte Izly.
de la classe considérée peuvent être liées à une Cette dernière n’est possédée que par un·e seul·e
instance de l’autre classe participant à l’association étudiant·e.
– 1 Un et un seul
– 0..1 Zéro ou un
– 0..* ou * Zéro ou plus
– 1..* Un ou plus
– M..N De M à N (M, N entiers)
ex. 4..10 (de 4 à 10) Lire « Un·e étudiant.e possède multiplicité (1) carte Izly ».
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 19 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 20
19 20
5
23/08/2019
ex. Une épreuve relève d’une et une seule matière. Une ex. Un·e étudiant·e peut appartenir ou non à un groupe
matière peut donner lieu à plusieurs épreuves. de TD. Un groupe de TD réunit plusieurs étudiant·es.
NB : La multiplicité un à plusieurs (1..*) peut aussi être NB : La multiplicité un à plusieurs (1..*) peut aussi être
zéro à plusieurs (0..* ou *). zéro à plusieurs (0..* ou *).
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 21 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 22
21 22
ex. Un·e étudiant·e peut passer plusieurs épreuves. Une Il est possible de caractériser une association par des
épreuve peut être passée par plusieurs étudiant·es. attributs.
ex. Un·e étudiant·e qui passe une épreuve obtient une note.
23 24
6
23/08/2019
Les étudiant·es sont caractérisé·es par un numéro unique, leur Les étudiant·es passent des épreuves et obtiennent une note
nom, prénom, date de naissance, rue, code postal et ville. pour chacune.
Les étudiant·es possèdent une carte Izly caractérisée par un Les épreuves sont caractérisées par un code, ainsi que la date et
numéro unique et un solde d’argent utilisable au CROUS. le lieu auxquels elles se déroulent.
Selon qu’ils ou elles sont dispensé·es ou non d’assiduité, les Chaque épreuve relève d'une matière unique (mais une matière
étudiant·es appartiennent à un groupe de TD caractérisé par un donnée peut donner lieu à plusieurs épreuves).
code unique.
Les matières sont caractérisées par un code et un intitulé.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 25 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 26
25 26
27 28
7
23/08/2019
Partie 2
Objectifs du modèle relationnel
Modélisation logique – Indépendance physique
– Traitement du problème de redondance des données
– Langages non procéduraux (faciles à utiliser)
– Devenir un standard
29 30
Modèle
Caractéristiques des SGBD relationnels Relations et attributs relationnel
Langages d’interrogation puissants et déclaratifs Une relation R est un ensemble d’attributs {A1, A2, …, An}.
Accès orienté valeur ex. La relation EPREUVE est l’ensemble des attributs
Grande simplicité, absence de considérations physiques {CodeEpr, DateEpr, Lieu}.
Description du schéma très réduite
Chaque attribut Ai prend ses valeurs dans un domaine
LDD intégré au LMD
dom(Ai).
Grande dynamique de structure
ex. Note ∈ [0, 20]
Optimisation de requêtes Lieu ∈ {'Amphi Say', 'Amphi Aubrac', 'Salle D101', …}
Utilisation interactive ou à partir d’un langage hôte
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 31 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 32
31 32
8
23/08/2019
Modèle Modèle
N-uplets relationnel Contraintes d’intégrité (1/2) relationnel
Notation d’une relation : R (A1, A2, …, An) Clé primaire : Ensemble d’attributs dont les valeurs
permettent de distinguer les n-uplets les uns des autres.
ex. EPREUVE (CodeEpr, DateEpr, Lieu)
ex. CodeEpr est clé primaire de la relation EPREUVE.
Un n-uplet t est un ensemble de valeurs t = <V1, V2, …, Vn>
où Vi ∈ dom(Ai) ou bien Vi est la valeur nulle (NULL). Clé étrangère : Attribut qui est clé primaire d’une autre
relation.
ex. <'InfoS2', '30-06-2016', 'Amphi Aubrac'> est un n-uplet
ex. Connaître la matière dont relève chaque épreuve
de la relation EPREUVE.
ajout de l’attribut CodeMat à la relation EPREUVE
33 34
Modèle Modèle
Contraintes d’intégrité (2/2) relationnel Contraintes d’intégrité en pratique relationnel
EPREUVE MATIERE
Notations :Clés primaires soulignées, clés étrangères
postfixées par le caractère #. CodeEpr DateEpr Lieu Codemat#
CodeMat Intitulé
ex. EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#) Amphi
ECOS101 15/01/2016 ECO
Aubrac
ECO Économie
Amphi
Contraintes de domaine : Les attributs doivent respecter ECOS102 16/01/2016
Aubrac
ECO
35 36
9
23/08/2019
37 38
Chaque association 1-N est prise en compte en Chaque association M-N est prise en compte en créant
incluant la clé primaire de la relation dont la une nouvelle relation dont la clé primaire est la
multiplicité maximale est 1 comme clé étrangère dans concaténation des clés primaires des relations
l’autre relation participante. participantes. Les attributs de la classe-association sont
insérés dans cette nouvelle relation si nécessaire.
ex. EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#)
ex. PASSER (NumEtu#, CodeEpr#, Note)
MATIERE (CodeMat, Intitulé)
39 40
10
23/08/2019
Modèle Modèle
Exemple : Modèle logique relationnel relationnel Traduction d’une association M-N relationnel
ETUDIANT
CARTE_IZLY (NumCarte, SoldeCROUS)
NumEtu Nom Prénom
GROUPE_TD (CodeGroupe) 1110 Dupont Albertine PASSER (table « pont »)
2002 West James NumEtu# CodeEpr# Note
ETUDIANT (NumEtu, Nom, Prénom, DateNaiss, 1110 INFOS101 15,5
Rue, CP, Ville, NumCarte#, CodeGroupe#) EPREUVE
2002 ECOS101 8,5
CodeEpr DateEpr Lieu
MATIERE (CodeMat, Intitulé) 2002 ECOS102 13
ECOS101 15/01/2016 Aubrac
1110 GESS201 14
ECOS102 16/01/2016 Aubrac
EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#) 2002 GESS201 14,5
GESS201 25/05/2016 D201
PASSER (NumEtu#, CodeEpr#, Note) INFOS101 20/01/2016 D101
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 41 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 42
41 42
Modèle Modèle
Problème de la redondance relationnel Anomalies liées à la redondance relationnel
43 44
11
23/08/2019
Éviter la redondance
Pourquoi ?
– Suppression des problèmes de mise à jour
– Minimisation de l’espace de stockage
Partie 3
Comment ? Interrogation
– Dans le modèle conceptuel, ne spécifier que des attributs non et manipulation
décomposables (première forme normale).
ex. Une adresse doit être décomposée en rue, code postal, ville… de bases de données
– C’est tout !
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 45 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 46
45 46
Modèle Modèle
Qu’est-ce que l’algèbre relationnelle ? relationnel Opérateurs ensemblistes (1/5) relationnel
47 48
12
23/08/2019
Modèle Modèle
Opérateurs ensemblistes (2/5) relationnel Opérateurs ensemblistes (3/5) relationnel
Intersection : T = R ∩ S Différence : T = R - S
ou T = INTERSECT (R, S) ou T = MINUS (R, S)
R et S doivent avoir même schéma. R et S doivent avoir même schéma.
ex. Permet de trouver les étudiant·es commun·es à deux ex. Permet de retirer les étudiant·es de la relation S
formations. existant dans la relation R.
T T
Notation graphique : Notation graphique :
∩ −
R S R S
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 49 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 50
49 50
Modèle Modèle
Opérateurs ensemblistes (4/5) relationnel Produit cartésien relationnel
51 52
13
23/08/2019
Modèle Modèle
Opérateurs ensemblistes (5/5) relationnel Division relationnel
53 54
Modèle Modèle
Opérateurs spécifiques (1/3) relationnel Opérateurs spécifiques (2/3) relationnel
T ne contient que les attributs A, B et C de R. T ne contient que les attributs de R qui satisfont la
ex. Noms et prénoms des étudiant·es. condition C.
ex. C = Étudiant·es qui habitent à Lyon.
Notation graphique : T
T Notation graphique :
A, B, C C
R R
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 55 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 56
55 56
14
23/08/2019
Modèle Modèle
Opérateurs spécifiques (3/3) relationnel Exemple de requête (1/4) relationnel
57 58
Modèle Modèle
Exemple de requête (2/4) relationnel Exemple de requête (3/4) relationnel
59 60
15
23/08/2019
Modèle
Exemple de requête (4/4) relationnel Classification des SGBD relationnels
ETUDIANT PASSER
Niveau 1 : Systèmes non relationnels.
E.NumEtu Nom P.NumEtu CodeEpr Note Supportent uniquement la structure tabulaire.
101 E1 101 INFO1 10
103 E3 103 INFO1 15 Niveau 2 : Systèmes relationnellement minimaux.
103 E3 103 ECO1 12 Permettent les opérations de restriction, projection et
jointure.
Π <Nom, CodeEpr, Note> (ETUDIANT PASSER)
Niveau 3 : Systèmes relationnellement complets.
Nom CodeEpr Note Toutes les opérations de l’algèbre relationnelle.
E1 INFO1 10 (Projection sur les attributs
E3 INFO1 15 Nom, CodeEpr et Note) Niveau 4 : Systèmes relationnellement pleins.
E3 ECO1 12 Permettent la définition des contraintes d’intégrité.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 61 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 62
61 62
63 64
16
23/08/2019
65 66
67 68
17
23/08/2019
Ajout de contrainte
ALTER TABLE nom_table
ADD CONSTRAINT nom_contrainte définition_contrainte
ex. ALTER TABLE Epreuve
ADD CONSTRAINT LieuValide CHECK (Lieu IN (‘Say’, ‘Aubrac’)) Définition : Structure de données physique permettant
d'accélérer les accès aux données
Suppression de contrainte
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte Exemple : CREATE INDEX IdxNomEtu ON Etudiant (Nom)
ex. ALTER TABLE Epreuve
DROP CONSTRAINT LieuValide
NB : La clé primaire d'une relation est automatiquement
indexée.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 69 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 70
69 70
71 72
18
23/08/2019
Intérêt des vues (2/2) LDD Mise à jour via une vue LDD
Sauvegarde indirecte de requêtes complexes Le mot clé DISTINCT doit être absent de la requête.
Présentation de mêmes données sous
différentes formes adaptées aux différents usagers particuliers
La clause FROM doit faire référence à une seule table.
Support de l’indépendance logique
ex. Si la table Etudiant est remaniée, la vue notesParEtudiant doit
être refaite, mais les requêtes qui utilisent cette vue n’ont pas à être La clause SELECT doit faire référence directement aux
remaniées. attributs de la table concernée (pas d’attribut dérivé).
Renforcement de la sécurité des données par masquage des lignes
et des colonnes sensibles aux usagers non habilités
Les clauses GROUP BY et HAVING sont interdites.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 73 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 74
73 74
75 76
19
23/08/2019
77 78
79 80
20
23/08/2019
81 82
ex. Prénoms des étudiant·es dont le nom est ET. ex. Épreuves se déroulant le 15/01/2016 en salle D201
Dupont, Durand ou Martin SELECT * FROM Epreuve
WHERE DateEpr = ‘15-01-2016’ AND Lieu = ‘D201’
SELECT Prénom FROM Etudiant OU. ex. Étudiant·es né·es avant 1990 ou habitant hors Lyon
WHERE Nom IN (‘Dupont’, ‘Durand’, ’Martin’) SELECT * FROM Etudiant
WHERE DateNaiss < ‘01-01-1990’ OR Ville <> ‘Lyon’
Combinaisons. ex. Étudiant·es né·es après 1990 et habitant Lyon
NB : Possibilité d’utiliser la négation pour tous ces prédicats ou Vienne
NOT BETWEEN, NOT NULL, NOT LIKE, NOT IN. SELECT * FROM Etudiant
WHERE DateNaiss > ‘31-12-1990’
AND (Ville = ‘Lyon’ OR Ville = ‘Vienne’)
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 83 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 84
83 84
21
23/08/2019
85 86
Table PASSER ex. Liste des notes avec le nom des étudiant·es
NumEtu CodeEpr Note
101 INFO1 10 SELECT Nom, CodeEpr, Note
RESULTAT
103 INFO1 15 FROM Etudiant, Passer
103 ECO1 12
Nom,
f
WHERE Etudiant.NumEtu = Passer.NumEtu
CodeEpr, Note
Hh
87 88
22
23/08/2019
ex. Idem avec le numéro d'étudiant en plus Jointure exprimée avec le prédicat IN
SELECT E.NumEtu, Nom, CodeEpr, Note ex. Notes des épreuves passées le 23 septembre 2016
FROM Etudiant E, Passer P
SELECT Note FROM Passer
WHERE E.NumEtu = P.NumEtu
WHERE CodeEpr IN (
ORDER BY Nom, Note DESC Sous-
SELECT CodeEpr FROM Epreuve requête
WHERE DateEpr = ‘23-09-2016’)
NB : Utilisation d’alias (E et P) pour alléger l’écriture
+ tri par nom (croissant) et note (décroissante). NB : Il est possible d’imbriquer des requêtes.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 89 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 90
89 90
91 92
23
23/08/2019
93 94
SELECT NumEtu
Ex. Numéro des étudiant·es qui ont passé toutes les épreuves FROM Etudiant Et
WHERE NOT EXISTS (
NB : Il n'existe pas d'opérateur de division en SQL ! SELECT *
FROM Epreuve Ep
Deux stratégies :
WHERE NOT EXISTS (
– Étudiant·es tels qu'il n'existe pas d’épreuve tel qu'il n'existe pas de SELECT *
« passage » pour cet étudiant·e et cette épreuve. FROM Passer P
– Étudiant·es qui ont passé un nombre distinct d’épreuves égal au WHERE Et.NumEtu = P.NumEtu
nombre total d’épreuves. AND P.CodeEpr = Ep.CodeEpr ) )
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 95 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 96
95 96
24
23/08/2019
97 98
Exemple de hiérarchie Vélo ex. Structure hiérarchique des éléments à partir de la racine
(nomenclature) :
Cadre Roues
SELECT Dési FROM Element
Relation associée : CONNECT BY Parent = PRIOR No_Elt
ELEMENT (No_Elt, Dési, Parent#) Pneu Rayons START WITH Parent IS NULL;
0 Vélo NULL
1 Cadre 0
2 Roue1 0 6 Rayon11 2
3 Roue2 0 7 Rayon12 2
Racine de la Ordre de parcours de
4 Pneu1 2 8 Rayon13 2 hiérarchie la hiérarchie
5 Pneu2 3 9 Rayon21 3
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 99 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 100
99 100
25
23/08/2019
101 102
103 104
26
23/08/2019
...
lendemain l’utilisateur
UPDATE Passer SET Note = NVL(Note, 10);
– SYSDATE : Date/heure système – USER : Nom de l’utilisateur
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 105 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 106
105 106
107 108
27
23/08/2019
109 110
111 112
28
23/08/2019
113 114
Tutoriel SQL
Partie 4
Programmation
de bases de données
http://eric.univ-lyon2.fr/jdarmont/tutoriel-sql/
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 115 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 116
115 116
29
23/08/2019
SQL encapsulé : Requêtes SQL incorporées dans le code source Langage de 4e génération (L4G = L3G + syntaxe type SQL)
(PL/SQL, T-SQL, PL/pgSQL, Pro*C…) C Conçu comme une extension de SQL
API : Requêtes SQL via des fonctions du langage U
R
Déclaration de variables et de constantes
(Java Persistence API, PHP Data Objects…)
S Types abstraits (collections, enregistrements, objets)
Interfaces de niveau appel : intergiciel entre le langage et le SGBD
E
(ODBC, JDBC, ADO…) Modularité (sous-programmes, paquetages)
U
Procédures stockées : Fonctions SQL stockées dans la base de R Gestion des erreurs (Gestion des erreurs)
données et exécutées par le SGBD S
(écrites en PL/SQL, T-SQL, PL/pgSQL) Interaction étroite avec Oracle/SQL (types identiques)
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 117 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 118
117 118
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 119 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 120
119 120
30
23/08/2019
121 122
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 123 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 124
123 124
31
23/08/2019
125 126
127 128
32
23/08/2019
129 130
131 132
33
23/08/2019
133 134
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 135 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 136
135 136
34
23/08/2019
EXISTS(i) renvoie TRUE si le ie élément existe dans la collection. DELETE(i) et DELETE suppriment respectivement le ie élément et tous
les éléments de la collection (listes seulement).
COUNT renvoie le nombre d’éléments dans la collection.
FIRST et LAST renvoient respectivement l’index du premier et du
dernier élément de la collection.
LIMIT renvoie la taille maximum de la collection (NULL pour les listes). NB : FIRST = 1 et LAST = COUNT dans un tableau.
EXTEND(n) augmente la taille de la collection de n. PRIOR(i) et NEXT(i) renvoient respectivement l’index de l’élément
EXTEND(1) ⇔ EXTEND précédent et de l’élément suivant du ie élément.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 137 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 138
137 138
139 140
35
23/08/2019
141 142
143 144
36
23/08/2019
-- Calcul de n!
PROCEDURE Conversion_USD_EUR (prix_USD IN REAL,
FUNCTION facto (n INTEGER) RETURN INTEGER IS
prix_EUR OUT REAL) IS
BEGIN
taux CONSTANT REAL := 0.89;
IF n = 1 THEN -- Condition d’arrêt
RETURN 1;
BEGIN
ELSE
prix_EUR := prix_USD * taux;
RETURN n * facto(n - 1); -- Appel récursif
END;
END IF;
END;
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 145 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 146
145 146
-- Exemple
DECLARE Définition : Structure de données qui stocke le résultat d’une
hundredBucks CONSTANT REAL := 100; requête retournant plusieurs n-uplets.
resEuro REAL;
fact10 INTEGER; Déclaration : CURSOR nom_curseur IS requete_SQL;
ex. CURSOR calc_TVA IS
BEGIN SELECT prod_num, price * 1.2 AS prix_TTC
Conversion_USD_EUR(hundredBucks, resEuro); FROM product;
fact10 := facto(10);
END; NB : Les n-uplets du curseur sont de type calc_TVA%ROWTYPE.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 147 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 148
147 148
37
23/08/2019
149 150
DECLARE
%NOTFOUND est égal à FALSE si FETCH renvoie un résultat. CURSOR c(s number) IS SELECT ename, sal FROM emp WHERE sal >= s;
nuplet c%ROWTYPE;
151 152
38
23/08/2019
153 154
155 156
39
23/08/2019
157 158
159 160
40
23/08/2019
161 162
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 163 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 164
163 164
41
23/08/2019
ON nom_table
[FOR EACH ROW] :OLD.nom_attribut : Valeur d’un attribut avant mise à jour
-- Bloc PL/SQL codant les actions à effectuer ex. DELETE FROM client WHERE NumCli = 33;
:OLD.NumCli prend la valeur 33 dans le déclencheur.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 165 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 166
165 166
167 168
42
23/08/2019
Définition du SQL dynamique : NB : Les requêtes qui altèrent la structure de la base de données
Construction d’une requête SQL à la volée dans un bloc PL/SQL (CREATE, DROP, ALTER…), même statiques, doivent être exécutées
en mode dynamique.
Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 169 Bases de données avancées http://eric.univ-lyon2.fr/jdarmont/ 170
169 170
171 172
43
23/08/2019
Конец
173
44