Introduction à SQL2. Professeur Serge Miranda Directeur Master «MBDS»

Dimension: px
Commencer à balayer dès la page:

Download "Introduction à SQL2. Professeur Serge Miranda [email protected] Directeur Master «MBDS» www.mbds-fr.org www.youtube."

Transcription

1 Introduction à SQL2 Professeur Serge Miranda Directeur Master «MBDS» Livre et Exemple 1

2 Plan Rappels sur le modèle relationnel de CODD (les 10 Concepts fondamentaux) SQL2 - Définition - Manipulation - Contrôle - Critiques Modèle Relationnel de CODD (les 10 concepts de base) et PARADIGME VALEUR Définitions «Domaines» «Relations» («ensemble» ou «prédicat») Clé Primaire / Clé Etrangère Contrôle : Règles d intégrité De domaines De relation De référence Manipulation ensembliste : algèbre de Codd (langage «fermé, complet et orthogonal») Opérateurs ensemblistes Opérateurs relationnels : SELECTION, PROJECTION, JOIN et DIVISION 2

3 Modèle Relationnel de CODD (V1) DOMAINE ("Domain") VILLE = { NICE, PARIS, LYON, TOULO USE} PILOTE PILNO PILNOM ADR 100 SERGE NICE 101 JOHN PARIS 102 PETER TOUL LIGNE = N-UPLET N ( "TUPLE" ) COLONNE = ATTRIBUT ("ATTRIBUTE") «Structuration» Modèle R Paradigme «VALEUR» "STRUCTURATION" (comme le "S" de SQL ) 100 Peter A300 VALEURS 500 John A320 Toulouse Nice 1ère phase de structuration : constructeur SET : "Domaines" = ( ensemble de VALEURS ) PL# PLNOM DOMAINES 100,200,300,500,... Peter, John, Serge,... VILLE AVNOM Toulouse, Nice,... A300, A320,... 3

4 Structuration (Suite) 2ème phase de structuration : constructeur TUPLE " Relations" = " ensemble de tuples " RELATIONS AVION AV# AVNOM CAP LOC 100 A Paris 101 A Nice Algèbre relationnelle de CODD 4

5 Modèles relationnels Les modèles relationnels de CODD V1 ( 1970 ) " b.c. " 1970 RM-T T ( 1980 ) et V2 / V3 ( 1990 ) " a.c. " 1970 SQL : SEQUEL (1975 et 1982) SQL1 ( 1989 ) SQL2 ( 1992 ) SQL3 ( 1999) SQL4?... Généralités Les 4 facettes de SQL Langage de définition (d un schéma relationnel) *** Notation : **** :vaut le détour Langage de manipulation de la base de données * *** mérite d être vu (3ème étoile en 89) * il faut le voir mais SQL Langage de contrôle de la base de données (interface transactionnelle, ) **** SEQUEL «Structured English as a QUEry Language» Prototype SYSTEM-R d IBM, SAN JOSE (1975) Langage de communication **** (client-serveur, Internet XML, BD réparties) 5

6 Généralités Les concepts structurels de SQL : Tables Colonnes Lignes PILOTE PL# PLNOM ADRESSE 1 JEAN PARIS 2 PIERRE NICE 3 PAUL PARIS AVION AV# AVNOM CAP LOC 100 A NICE 101 B PARIS 102 A LYON 103 B LYON Généralités Modèle de Codd SQL (SEQUEL*) Français Anglais Relation Relation Table Domaine Domain Domain (SQL2) Attribut Attribute Column n-uplet (tuple) Tuple Line Clé primaire Primary key Primary key (ORACLE V6, DB2, V4,.) Clé étrangère Foreign key References (ORACLE V6, DB2 V4,.) * SEQUEL : «Structured English as a QUEry Language» 6

7 1. Définition et MAJ du schéma (noyau SQL) Create table [not null ; primary key / references] alter table add [modify, delete] create / drop index unique [create /drop data-space] Définition du schéma Create schema < Création de deux domaines Ville et Heure > create domain 1 Ville as char (12) default PARIS check (value in( PARIS, NICE, TOULOUSE )) create domain Heure as hour check (value > 7 and value < 22) < Création des tables > create table 2 PILOTE (PL# decimal (4), PLNOM char (12), ADR Ville check (value in ( PARIS, NICE )), SAL decimal (5), primary key (PL#)) 7

8 create table AVION (AV# decimal (4), AVNOM char (12), CAP decimal (3) check (value > 100), LOC Ville, primary key (AV#)) Create table VOL (VOL# char(5), PL# decimal (4) not null, AV# decimal(4), VD Ville, VA Ville, HD Heure, HA Heure, primary key (VOL#), foreign key (PL#) references PILOTE, initially deferred, foreign key (AV#) references AVION, on delete cascade, on update set null)) alter domain. Drop constraint Définition du schéma Type syntaxique Char(n), decimal, integer, bit, float, date (year, month, day), times (hour, minute, second), timestamp, interval Dictionnaire relationnel (INFORMATION-SCHEMA CATALOG) comprenant des tables systèmes accessibles par. SQL. 8

9 Définition du schéma Dictionnaire Relationnel Intégré Exemple : DB2 comprend un dictionnaire intégré («CATALOG») qui comprend des tables systèmes. Les PRINCIPALES SYSTABLES NAME CREATOR COLCOUNT Pilote Serge 4 Avion Serge 4 Vol Serge 7 SYSCOLUMNS NAME TBNAME COLTYPE PL# Pilote SMALLINT PLNOM Pilote CHAR ADR Pilote CHAR AV# Avion SMALLINT Définition du schéma Cluster : «Jointure dans la structure physique» (System-R, Oracle) Exemple : Cluster entre PILOTE et VOL sur PL# Bloc de cluster pour chaque valeur de PL# Exemple d un bloc de cluster pour la valeur pl# = SERGE NICE IT PARIS 100 NICE 7 8 IT NICE 101 PARIS IT PARIS 104 TOUL Create cluster PV (PIL# number (4)) (clé du cluster) 9

10 Définition du schéma Utilisation de l option CLUSTER dans create table pour mise en cluster table créée. Ex : create table PILOTE (PL# number(4) primary key, ) cluster PV (pil#) Mise en cluster d une table existante Exemple : create table VOL2 cluster PV (PL#) as select * from VOL drop table VOL rename VOL2 to VOL Définition du schéma On peut : Retirer une table d un cluster : alter cluster PV drop table PILOTE Supprimer un cluster : drop cluster PV Note : importance du cluster pour le stockage des objets persistants. 10

11 Manipulation BD 2 Interrogation et mise à jour d une base de données (noyau SQL) 2.1 SQL interactif Interrogation : <Mapping SQL> Select < liste attributs cible ou * > from < tables > where < qualification sur les lignes > avec in, exists, any, all, and, or, not, between, like, group by < attributs partitionnés > having < qualification sur les partitions > order < tri > union LMD Mise à jour : update R set where Suppression : delete from R where Insertion : insert into R values 11

12 Manipulation BD 2.2 SQL «intégré» («embedded SQL») Pointeur logique : «cursor» («impedance mismatch») (exec sql) declare CX cursor for < requête SQL > (exec sql) open / fetch / update / delete / close CX (cursor) Current (élément pointé) Code retour : sqlcode Manipulation BD Rappel : Opérateurs relationnels Diagramme de Venn pour les opérateurs UNION, INTERSECTION, DIFFERENCE entre 2 relations R1 et R2 qui doivent être unicompatibles (même nombre d attributs et attributs respectifs définis sur le même domaine) UNION INTERSECTION R1 R2 R1 R2 DIFFERENCE R1 R2 12

13 Manipulation BD SELECTION («découpage horizontal») PROJECTION («découpage vertical») Manipulation BD Rappel : JOINTURE de R1 et R2 sur A1 et A2 (quantificateur existentiel ) R1 A1 - - a1 - - a2 + + a2 # # a4 - - a5 R2 A2 a1 a2 a2 m p q R3 - - a1 a1 m - - a2 a2 p + + a2 a2 q 13

14 Manipulation BD DIVISION de R1 par R2 sur A1 et A2 (A1 et A2 définis sur le même domaine) (quantificateur universel ) R1 R2 B1 b1 b1 b2 b3 b4 b4 A1 a1 a2 a2 a1 a1 a2 A2 a1 a2 diviseur dividende R3 B b1 b4 Présentation par l exemple des verbes SQL2 de manipulation Domaine : = {Nice, Paris, Lyon, Toulouse } PILOTE PL# PLNOM ADR 100 Serge Nice 101 Jean Paris 102 Paul Paris VOL VOL# PL# VA... IT Nice IT Paris IT Paris 14

15 Manipulation BD select - from - where? AVION AVN AVNOM CAP LOC 100 A NICE 101 B PARIS 102 A LYON 103 B NICE Select AVNOM, CAP from AVION where LOC = NICE ; AVION AVNOM CAP A B Manipulation BD EXEMPLE1 : Requête mono-table en mode interactif puis imbriqué : Quels sont les vols (toutes les infos) desservant PARIS après 12 h?» Version interactive : select * from VOL where VA = PARIS and HD > 12. Version imbriquée dans un langage hôte («embedded SQL») : exec sql declare CX cursor for select VOL# from VOL where VA = PARIS ; declare VOL char(5) ; HD date ; HA date ; exec sql open CX ; do exec sql fetch CX into : VOL, : HD, HA ; < traitement sur les variables > end exec sql close CX ; 15

16 Manipulation BD Exemple : Interrogation du dictionnaire Quels sont les noms des colonnes de la table VOL? Select NAME from SYSCOLUMNS where TBNAME = VOL Quelles sont les tables du schéma? Select NAME from SYSTABLES ; Quelles sont les tables qui contiennent une colonne PL#? Select TBNAME from SYSCOLUMNS where NAME = pl# ; Manipulation BD Exemple 2 : Requête de jointure «Quels sont les noms des pilotes qui sont en service sur un vol desservant Paris?» select PLNOM from PILOTE, VOL where PILOTE. PL# = VOL. PL# and VOL. VA = PARIS ; 16

17 GROUP BY select * from vol ; VOL VOL# PL# AV# VD VA IT NICE PARIS IT PARIS TOUL IT TOUL PARIS IT PARIS NICE IT NICE LYON group by PL# : PL# = 1 VOL# AV# VD VA IT NICE PARIS IT PARIS NICE IT NICE LYON PL# = 2 VOL# AV# VD VA IT PARIS TOUL IT TOUL PARIS Manipulation BD Un peu de version.. Select PL#, COUNT(*) from VOL group by PL# having count (*) 3 ; 17

18 Traduction des requêtes SQL suivantes en Français SQL : select PL#, count (*) from VOL group by PL# having count (*) 3 ; «Quels sont les numéros de pilotes qui assurent plus de trois vols (avec le nombre de vols assurés)?» SQL : select PL#, count (*) from VOL where VD = NICE (1) group by PL# (2) having count (*) > 3 ; (3) Requête en français : «Quels sont les numéros des pilotes (avec le nombre de vols assurés) qui assurent plus de 3 vols au départ de Nice?» Manipulation BD Requête SQL : select PL#, count(*) from VOL where PL# (2) in (select PL# from VOL (1) where VD = NICE ) group by PL# (3) having count (*) > 3 ; (4) Requête en français : «Quels sont les numéros des pilotes (avec le nombre de vol assurés) qui assurent plus de 3 vols dont 1 au moins au départ de Nice?» 18

19 Exemple 4 : Requêtes de mise à jour Suppression des vols au départ de NICE delete From VOL where VD = NICE ; Augmentation de 10 de la capacité des AIRBUS localisés à NICE? update AVION set CAP = CAP + 10 where AVNOM = AIRBUS and LOC = NICE ; Manipulation BD Augmentation de 10 de la capacité des AIRBUS en service au départ de NICE et conduits par des pilotes habitant PARIS. update AVION set CAP = CAP + 10 where AVNOM = AIRBUS and AV# in ( select AV# from VOL where VD = NICE and PL# in ( select PL# from PILOTE where ADR = PARIS )) ; 19

20 Exemple : «Quelle est la moyenne des capacités des avions localisés à NICE?» select avg(cap) from AVION where LOC = NICE ; Remarques : - Fonction de base : AVG, SUM, COUNT, MAX, MIN - Pauvreté du SELECT du standard («singleton») - GROUP BY / HAVING de SQL2 : HAVING peut exister sans GROUP BY signifiant que le résultat du SELECT-FROM-WHERE est perçu comme une table partitionnée. Les expressions de la clause HAVING doivent être monovaluées par groupe. - Variable de parcours explicite : select * from AVION as AVX where AVX. AV# in (select AVY. AV# from AVION as AVY) ; Manipulation BD Autres exemple avec le NATURAL JOIN dans la clause FROM select * from (PILOTE natural join VOL) as PV ; 20

21 Manipulation BD Représentation des opérateurs relationnels en SQL (SQL1, SQL2) et nouvelles jointures dans SQL2 Tables PILOTE, AVION, VOL et les deux vues AVNICE : (select * from AVION where LOC = NICE ;) AVAIRBUS : (select * from AVION where AVNOM = AIRBUS ;) Opérateurs relationnels en SQL UNION Manipulation BD UNION Ex : select AV# from AVNICE union select AV# from AVAIRBUS ; 21

22 Manipulation BD INTERSECTION DIFFERENCE SQL1 SQL2 SQL1 SQL2 select AV# (select AV# select AV# from (select AV# from AVNICE from AVNICE) AVNICE from AVNICE) where exists intersect where not exists except (select AV# (select AV# (select AV# (select AV# from AVAIRBUS from from AVAIRBUS from where AVAIRBUS) ; where AVAIRBUS); AVAIRBUS.AV# AVAIRBUS.AV# = AVNICE.AV#); = AVNICE.AV#); Algèbre de Codd et SQL (Suite) SELECTION select * from AVION where CAP > 200 ; select AV#, AVNOM from AVION. PROJECTION 22

23 Algèbre de Codd et SQL (Suite) JOINTURE DIVISION «Qules sont les noms des pilotes en service au départ de Nice?» Il existe 7 façons différentes dont les deux principales sont : - Solution prédicative : select PLNOM from PILOTE, VOL where VOL-VD = NICE and PILOTE.PL# = VOL.PL# ; «Quels sont les numéros de pilotes qui conduisent TOUS les avions?» select distinct VX.PL# from VOL VX where not exists (select AV# from AVION where not exists (select * from VOL VY where VY.PL# = VX.PL# and AVION.AV# = VY.AV#)); Manipulation BD Autres JOINtures dans SQL2 : select PLNOM from PILOTE (NATURAL) join VOL on VOL.VD = NICE [using Pilote.PL# = Vol.PL# ;] Les jointures «externes» (OUTER JOIN ) : «LEFT», «RIGHT», «FULL», sous union (UNION JOIN), produit cartésien (CROSS JOIN), A join B on C using att1» est équivalent à select * from A, B where C and A. att1 = B. att1; < att1 et att2 sont les attributs de jointure CP/CE> 23

24 Manipulation BD Exemple de 3 requêtes équivalentes FROM. PILOTE left join VOL on PILOTE.PL# = VOL.PL# ; PILOTE left join VOL using PL# ; PILOTE natural left join VOL; Manipulation BD Requête SQL Q1 : Quels sont les noms d avion avec leur numéro et leur localisation (autre que Nice), ayant une capacité supérieure à 200 avec un tri décroissant sur le numéro? select AV#, AVNOM, LOC from AVION where CAP > 200 and LOC# NICE order by AV# dsc ; 24

25 Manipulation BD (exemples) Jointure entre 3 relations Q2 : Quels sont les noms des pilotes qui conduisent un AIRBUS? Ensembliste : (A) select PLNOM from PILOTE where PL# in (select PL# from VOL where AV# in (select AV# from AVION where AVNOM = AIRBUS)); Prédicatif : (A) select PLNOM from PILOTE, AVION, VOL where PILOTE. PL# = VOL.PL# and VOL.AV# = AVION.AV# and AVION.AVNOM = AIRBUS ; 25

26 Manipulation BD (exemples) Jointure sur des colonnes non clé Q3 : Quels sont les noms des pilotes qui habitent dans la ville de localisation d un AIRBUS? (B) select PLNOM from PILOTE, AVION where PILOTE. ADR = AVION. LOC and AVION.AVNOM = AIRBUS ; Questions logiques : (UNION, INTER, MINUS) correspondent à OU, ET, SAUF Q3 = Q3 et Q4 : (A) inter (B) Quels sont les noms des pilotes qui conduisent un AIRBUS ET qui habitent dans la ville de localisation d un AIRBUS? Manipulation BD (exemples) Autres jointures Q4 : Quels sont les vols ayant un trajet identique (VD, VA) à ceux assurés par Serge? select * from VOL where (VD, VA) in (select VD, VA from VOL, PILOTE where VOL. PL# = PILOTE.PL# and PILOTE.PLNOM = Serge ); 26

27 Manipulation BD (exemples) Q5 : Quels sont les pilotes qui habitent la ville de localisation d un AIRBUS et qui sont en service au départ d une ville desservie (VA) par «Serge»? select * from PILOTE where ADR in( select LOC from AVION where AVNOM = AIRBUS ) and PL# in ( select PL# from VOL where VD in ( select VA from VOL, PILOTE where VOL.PL# = PILOTE.PL# and PILOTE.PLNOM = Serge )); Manipulation BD (exemples) Q6 : Quels sont les noms des pilotes qui assurent un vol au départ de Paris? Ensembliste : utilisation d une sous-requête select PLNOM from PILOTE where PL# in (select PL# from VOL where VOL. VD = PARIS ) ; Prédicative : utilisation d une équation de jointure select PLNOM from PILOTE, VOL where PILOTE. PL# = VOL.PL# and VOL.VD = PARIS ; Nous pouvons donner cinq autres formes Copyright de traduction Serge Miranda de la jointure (!) : 27

28 select PLNOM from PILOTE where PL# = ANY (select PL# from VOL where VOL.VD = PARIS ); select PLNOM from PILOTE where exists (select * from VOL where PILOTE.PL# = VOL.PL# and VOL.VD = PARIS ); select PLNOM from PILOTE where 0 < ( select count (*) from VOL where PILOTE.PL# = VOL.PL# and VOL.VD = PARIS ) ; select PLNOM from PILOTE where PARIS = any ( select VD from VOL where VOL.PL# = PILOTE.PL#); Manipulation BD (exemples) Jointure et ANY - ALL Q7 : Quels sont les avions dont la capacité est supérieure à toutes les capacités des avions localisés à Nice? select * from AVION where CAP > all (select CAP from AVION where LOC = NICE ) ; Q7 : Quels sont les avions dont la capacité est supérieure à au moins celle d un avion localisé à Nice? select * from AVION where CAP > any (select CAP fromcopyright AVION where Serge Miranda LOC = NICE ); 28

29 Manipulation BD (exemples) Jointure multiple et résultat multi-relation Q8 : Donner toutes les paires de villes telles qu n avion localisé dans la première soit conduit par un pilote résidant dans la deuxième. select AVION.LOC, PILOTE.ADR from PILOTE, AVION, VOL where PILOTE.PL# = VOL.PL# and AVION.AV# = VOL.AV# ; Note : cet exemple met en jeu une jointure des 3 tables Q9 : Donner toutes les paires de pilotes habitant la même ville. (numéro de pilote) select PIL1.PL#, PIL2.PL# from PILOTE PIL1, PILOTE PIL2 where PIL1.ADR = PIL2.ADR and PL#différents; 29

30 Manipulation BD (exemples) Jointure externe («outer join») Q10 : Pour chaque pilote, donner son adresse et pour ceux qui sont en service, la liste des vols assurés. SQL de DB2 (et tout le dialecte SQL avec UNION) select PILOTE.PL#, PILOTE.ADR, VOL.VOL# where PILOTE.PL# = VOL.PL# union (all) select PILOTE.PL#, PILOTE.ADR, bb from PILOTE where not exists (select * from VOL where PILOTE.PL# = VOL.PL#); Partitionnement (GROUP BY) Q11 : Pour chaque pilote en service, quel est le nombre de vols assurés? select PL#, count (*) from VOL group by PL# Note : La colonne de partitionnement doit figurer dans la liste SELECT Q12 : Pour chaque avion en service l après - midi (après 12h) et conduit par plus de 2 pilotes, quels sont les trajets (VD, VA) assurés? select AV#, VD, VA from VOL where HD > 12 group by AV# having count (*) > 2 ; 30

31 Manipulation BD (exemples) GROUP BY : quelques variantes SELECT : attribut(s) partitionné(s) et Expression monovaluée (DB2,..) Attributs de la même relation (SQL server) GROUP BY : mono ou multi-attribut HAVING : Avec la clause WHERE Avec fonctions seulement.. Fonction de calcul Quel que soit le dialecte SQL, on trouve les fonctions AVG, SUM, MIN, MAX, COUNT. SQL+ d ORACLE offre en plus le calcul de variance (VARIANCE) et l écart type (STDDEV : «standard deviation»). Q13 : Quel est le nombre de trajets (VD, VA) assurés après 12 h select count distinct (VD, VA) from VOL where HD > 12 ; La fonction de calcul prend en compte l ensemble des lignes satisfaisant le WHERE Q14 : Quelle est la capacité maximum des avions par ville de localisation? select LOC, max (CAP) from AVION group by LOC ; 31

32 Manipulation BD (exemples) Q15 : Quelle est la capacité moyenne des avions par ville et par type? select LOC, AVNOM, avg (CAP) from AVION group by LOC, AVNOM; Q16 : Quel est le nombre de pilotes différents en service? select count (distinct VOL.PL#) from VOL; Q17 : Pour chaque ville de localisation sauf «Paris» de la compagnie, donner les capacités minimum et maximum d avions qui s y trouvent. select LOC, min(cap), max(cap) from AVION where LOC# PARIS group by LOC; Q18 : Quels sont les avions (numéros et noms) dont la capacité est comprise entre 200 et 300 et dont la localisation correspond à la ville de départ du vol «IT100». select AV#, AVNOM from AVION where CAP between 200 and 300 and AVION.LOC in (select VD from VOL where VOL# = IT100 ); 32

33 Q19 : Quels sont les avions (AV#, AVNOM) qui, après une augmentation de 10% de leur capacité, ont une capacité supérieure à 250? select AV#, AVNOM from AVION where CAP* 1.1 > 250; Q20 : Quelle est la capacité moyenne des avions pour chaque ville ayant plus de 10 avions (localisés)? select LOC, avg(cap) from AVION group by LOC having count (*) > 10; Q21 : Quels sont les pilotes (avec leur nombre de vols) parmi 100, 110, 120 et 130 qui assurent plus de 3 vols? select PL#, count(*) from VOL where PL# in (100, 110, 120, 130) group by PL# having count (*) > 3; Q22 : Quels sont les avions dont la capacité est supérieure à toutes les moyennes de capacités des avions par ville? select * from AVION where CAP > all (select avg(cap) from AVION group by LOC); Q23: Quels sont les vols au départ de Nice entre 14h et 16 h? select * from AVION where HD between 14 and 16 and VD = NICE ; Q24 : Quels sont les avions de type AIRBUS? Recherche sur troncature (AIRBUSA300, AIRBUSA320,.) select * from AVION where Copyright AVNOM Serge Miranda like AIRBUS% ; 33

34 Manipulation BD (exemples) Q25 : Quels sont les pilotes dont le nom comprend un «I» en deuxième position? select * from PILOTE where PLNOM like I% ; Q26 : Quels sont les pilotes dont le nom ressemble phonétiquement à «SMITH»? select PLNOM from PILOTE where soundex(plnom) = soundex( SMITH ); (Le pilote de nom SCHMIDT ferait partie du résultat) EXERCICE. Quelles sont les capacités maximales et la moyenne des capacités des Airbus (LIKE AIRBUS%) en service au départ de Nice et conduits par des pilotes dont le nom «sonne» comme SMITH ayant reçu la formation pour les conduire, pour les villes de localisation NICE, PARIS, TOULOUSE avec un nombre d avions localisés par ville correspondant au nombre d avions localisés à LYON? SELECT LOC, MAX (CAP), AVG (CAP) FROM (AVION NATURAL JOIN VOL ON VD = NICE AND AVNOM LIKE AIRBUS% AND LOC in (NICE, PARIS, TOULOUSE)) AS AV, AV NATURAL JOIN FORMATION USING AV.PL# = FORMATION.PLNO ON AV.AVNOM = FORMATION.TYPAV, PILOTE WHERE PILOTE.PL# = AV.PL#AND PLNOM SOUND ( SMITH GROUP BY LOC HAVING COUNT (*) = (SELECT COUNT (*) FROM AVION WHERE LOC = LYON ) ; Notes : Mettre la clause USING dans NATURAL JOIN si les attributs de jointure n ont pas le même nom Il existe plus de 1000 façons différentes d écrire cette requête (plus de 10 façons d écrire une jointure! 34

35 Manipulation BD (exemples) Sous-requêtes «indépendantes» : Q27 : Quels sont les avions dont la capacité est supérieure de 10% à la moyenne des capacités des avions? select * from AVION where CAP > (select avg (CAP)* 1.1 from AVION) ; (1) (2) (2) est évaluable séparément de (1) Maniplulation (sous requêtes indépendantes) Q28 : Quels sont les numéros des pilotes qui conduisent un avion conduit aussi par le pilote n 100? select distinct PL# from VOL where AV# in (select AV# from VOL where PL# = 100); 35

36 Manipulation BD (exemples) Avec un seul mapping, on aurait dû introduire une variable de parcours : select distinct PL# from VOL AS VX where VOL.AV# = VX.AV# and VX.PL# = 100; Une double variable de parcours pourrait être introduite : select distinct VX. PL# from VOL AS VX, VOL AS VY where VX. AV# = VY.AV# and VY.PL# = 100; Manipulation BD (exemples) Sous-requêtes «dépendantes»: Q29 : Quels sont les avions dont la capacité est supérieure de 10 % à la moyenne de capacités des avions localisés dans la même ville? select * (1) from AVION AX where AX.CAP > (select avg (AY.CAP)* 1.1 from AVION AY (2) where AX.LOC = AY.LOC); 36

37 Manipulation BD (exemples) Q30 : Quels sont les pilotes qui conduisent un avion conduit aussi par un pilote qui habite la même ville? select PILOTE.* from PILOTE AS PX, VOL AS VX where PILOTE.PL# = VOL.PL# and AV# in (select VX.AV# from VX where VX.PL# NOT= PILOTE.PL# and VX.PL# in (select PX.PL# from PX where PX.ADR = PILOTE.ADR)); Select P1.* From Pilote P1, Pilote P2, Vol V1, Vol V2 Where V1.AV # = V2.AV # and P1.PL # = V1.PL # and V2.PL # = P2.PL # and P1.ADR = P2.ADR And P1.PL # =/= P2.PL # ; 37

38 Sous-requêtes dépendantes : (suite) Dans les SQL standard, il y a systématiquement utilisation de variables SYNONYMES de parcours dans les sous-requêtes ; avec les autres dialectes SQL, cette utilisation n est nécessaire que dans les sous-requêtes dépendantes. Variable de parcours explicite : (SQL2) Select * from AVION as AVX where AVX.AV# in (select AVY.AV# from AVION as AVY Where AVX.CAP>AVY.CAP and AVY.LOC = Nice ) ; Autre exemple avec le NATURAL JOIN dans la clause FROM (avec même attribut de jointure : pas de clause USING) select * from (PILOTE natural join VOL) as PV ; Manipulation BD (exemples) Fonctions statistiques et SQL Moyenne arithmétique pondérée - P (liste) non pondérée - non P (ensemble) Q31 : Quelle est la moyenne des capacités de avions de la compagnie? P. non P. select avg (CAP) select avg (distinct CAP) FROM AVION ; FROM AVION ; 38

39 Fonctions Statistiques Table de fréquences : pour chaque valeur, nombre de fois qu elle apparaît. Q32 : Quelle est la table des fréquences des capacités des avions? select CAP, count (*) from AVION group by CAP; Intervalle Q33 : Quel est l intervalle des capacités des avions de la compagnie? select max(cap) - min(cap) from AVION; Fonction STAT et SQL2 Mode : valeur avec la fréquence la plus élevée Q34 : Quel est le mode de la capacité des avions? select CAP from AVION group by CAP having count (*) >= all (select count (*) from AVION group by CAP); 39

40 Division algébrique Q35 : Sélectionner les numéros de pilotes qui conduisent tous les avions de type AIRBUS de la compagnie. Forme équivalente traitée en SQL Q35 : Sélectionner les numéros de pilote en service tel qu il n existe pas d avion de nom AIRBUS qui ne soit pas conduit par ces pilotes Ecriture en SQL+ : select unique (PL#) from VOL as VX where not exists (select * from AVION where AVION.AVNOM = AIRBUS and not exists (select* from VOL as VY where AVION.AV# = VX.AV# and VY.PL# = VX.PL#)); Manipulation BD (exemples) Exemple avec l égalité ensembliste de SEQUEL (1975) : select PLNOM from PILOTE where ensemble des numéros d avion conduits par un pilote du résultat (select AV# from VOL where VOL.PL# = PILOTE.PL#) égalité ensembliste = ensemble des numéros (select AV# d avion correspondant from AVION à un AIRBUS where AVNOM = AIRBUS ); Note : CONTAINS ( inclusion ensembliste) 40

41 Manipulation BD (exemples) Solution avec la fonction de comptage select PL# from VOL where AV# in (select AV# from AVION where AVION.AVNOM = AIRBUS ) group by PL# having count (distinct AV#) = (select count (*) from AVION where AVNOM = AIRBUS ); Manipulation BD (exemples) Recherche hiérarchique (SQL + d ORACLE) (Problème de fermeture transition) Hiérarchie de vols en correspondance au départ de Nice. NICE PARIS TOULOUSE LYON MARSEILLE PARIS LYON LYON BRUXELLE PARIS TOULOUSE 41

42 Fermeture transitive et SQL2 Q36 : Quel sont les vols en correspondance directe au départ de Nice? select VOL#, VD, VA from VOL connect by VD = prior VA start with VD = NICE ; Manipulation BD (exemples) Les lignes du résultat sont ordonnées suivant le parcours de l arbre : VOL# VD VA IT100 NICE PARIS IT105 PARIS MARSEILLE IT107 MARSEILLE LYON IT102 NICE TOULOUSE IT106 TOULOUSE PARIS IT108 TOULOUSE LYON Possibilité d utiliser la variable LEVEL pour connaître le niveau hiérarchique (1 à 256) Fermeture SQL +? 42

43 SQL intégré Q38 : Donner les informations sur un vol donné. Program VOL-INFO variables VOLNO VD VA HD HA : smallint; : char(6); : char(6); : time; : time; Begin read Quel est le numéro de vol :? VOLNO; select VOLNUM, VD, VA, HD, HA into VOLNO, : VD, :VA, :HD, :HA from VOL where VOLNUM = : VOLNO; print Numéro de vol :, VOLNO; print Ville de départ :, VD; print Ville d arrivée :, VA; print Heure de départ :, HD; print Heure d arrivée :,HA; end Manipulation BD (exemples) SQL intégré Q39 : Donner les numéros de vol au départ de NICE. Program VOLNICE Variable VOLNO : smallint; Begin declare V cursor for select VOLNUM from VOL where VD = NICE ; print Numéros de vol au départ de NICE : ; open V fetch V into : VOLNO; while sqlcode = 0 do print VOLNO; fetch V into : VOLNO; od close V end 43

44 III CONTRÔLE BD en SQL2 Contrôle de la base de données (noyau SQL) «TRANSACTIONS» begin / end transaction Commit (Work) Rollback (work) lock table in exclusive mode /shared mode «VIEWS» Contrôle BD Vue («view») en SQL2 Table virtuelle (seule la définition est stockée) Exemple : Création d une vue de sécurité pour cacher les lignes de PILOTE correspondant à des salaires supérieurs à F : create view BAS-SALAIRE as select * from PILOTE where SAL ; GRANT / REVOKE : ex : 44

45 3. Contrôle BD (Transaction) («Tout ou rien», ) «alors que le TOUT se devait d être éclairant, Le RIEN pouvait se contenter d être moderne se contenter de RIEN, mais habiller ce rien de telle façon qu il fasse illusion» Claude JANNOUD («Au rendez-vous du nihilisme» 1989) Transaction en SQL Une transaction SQL est un ensemble d opérations SQL rendu «atomique» («tout ou rien») qui permet de passer d un état cohérent de la BD dans un autre («A et C» de ACID) Dans SQL2, le début d une transaction est implicite (pas de verbe BEGIN TRANSACTION) et la fin correspond au verbe COMMIT (terminaison correcte) T («COMMIT ou ROLLBACK» : Tout) (annulation et retour arrière) état cohérent i de la base de données état cohérent j de la base de données T («ROLLBACK» : Rien) 45

46 Contrôle BD Transaction en SQL d Oracle 3 types de transactions : READ /WRITE (par défaut) : SET TRANSACTION READ/WRITE READ ONLY (reporting) : SET TRANSACTION READ ONLY DISCRETE (pour OLTP lourd) : opérations internes sur le LOG différées Execute dbms-transaction.begin-discrete-transaction Insert.. Insert.. Commit work 3. Contrôle BD (Transaction) «Atomicité» : Environnement défaillant Tous les ordres SQL ou aucun vont être exécutés quelle que soit la panne Retour arrière assuré jusqu au début de la transaction ou au dernier point de reprise (SAVE POINT) «Sérialisibilité» : Environnement concurrentiel L exécution en parallèle de plusieurs transactions est équivalente à leur exécution en série Points de reprise (SAVEPOINT) Intérêts : retour arrière limité en cas de panne (rollback work) programmation structurée ex : SQL + d ORACLE insert into PASSAGER values (1, serge, ); savepoint after insert;.rollback S after insert;.commit 46

47 3. Contrôle BD Propriétés ACID d une transaction ACID A : Atomicité C : Cohérence I : Isolation (effets d une transaction non observables par une autre) D : Durabilité Problème d interférence entre transactions concurrentes («A+C») Problème des mises à jour perdues (dépendance écriture - écriture) T1 : augmentation de 10 de la capacité T2 : réduction de 5 de la capacité des des AIRBUS avions localisés à Paris begin T1. Update AVION set CAP = CAP + 10 where AVNOM = AIRBUS ;. end T1 begin T2 update AVION set CAP = CAP - 5 where LOC = PARIS ;. end T2 t Danger : Problème de mise à jour perdue ; «La capacité des AIRBUS localisés à Paris devrait être : CAP = CAP = CAP 0 + 5». 47

48 Problème de lecture impropre : (dépendance écriture - lecture) T1 : augmentation de 10 de la capacité des AIRBUS T2 : lecture des avions de capacité supérieure à 300 ou de nom AIRBUS avec traitement sur les capacités begin T1 begin T2. Update AVION.. set CAP = CAP where Select * AVNOM = AIRBUS ; from AVION. where CAP > 300. or AVNOM = AIRBUS ;... Rollback T1 end T2 end T1 T2 va prendre en compte les données modifiées par T1. Or les effets de T1 doivent être Copyright Serge t Miranda annulés (ROLLBACK T1) : la lecture de la table AVION par T2 est impropre. Problème de lecture non reproductible :(dépendance lecture - écriture) T1 : lecture à deux moments différents de la table AVION T2 : idem begin T1 begin T2. select *. from AVION.. where CAP > 300; Update AVION. set CAP = CAP where. AVNOM = AIRBUS select * or CAP > 300c from AVION. where CAP > 300;. end T2 end T1 t Les deux ensembles (1) et (2) peuvent être différents du fait de la modification effectuée par T2 : c est le problème de lecture non reproductible. 48

49 Solution : ISOLATION (VERROUILLAGE, ) Mécanisme unanimement retenu dans les SGBD pour assurer la sérialisibilité (et don la cohérence dans un environnement concurrentiel) VERROU (variable d état pour l accès à une donnée) «partagé» (SHARE) : possibilité de lecture par une transaction concurrente en co-propriété (pas de mise à jour). «Exclusif» (EXCLUSIVE) : impossibilité de lire ou de mettre à jour par une transaction concurrente.mise en attente de la transaction concurrente Une transaction qui va lire une donnée doit poser un verrou partagé (déverrouillage après lecture). Une transaction qui va modifier une donnée doit poser un verrou exclusif (déverrouillage après écriture). Opérateur SQL de DB2 pour verrouiller (LOCK) / déverrouiller (UNLOCK) : share LOCK /UNLOCK table (T) in mode exclusive Verrouillage en SQL de DB2 Résolution du problème des mises à jour perdues : begin T1. lock table AVION in exclusive mode update AVION set CAP = CAP + 10 where AVNOM = AIRBUS unlock table AVION t begin T2. lock table AVION wait wait wait wait wait lock table AVION in exclusive mode update AVION set CAP = CAP - 5 where LOC = PARIS unlock table AVION La capacité des AIRBUS localisés à Paris est : CAP = CAP

50 Transaction «bien formée» (1) chaque action de lecture est précédée de LOCK - Read chaque action d écriture est précédée de LOCK - Update «Verrouillage à 2 phases» (2) phase de croissance d acquisition de verrous («SEIZE BLOCK») phase de décroissance de libération de verrous THEOREME DE JIM GRAY : Si (1) et (2) transactions concurrentes alors il y a sérialisibilité des Problème des lignes fantômes (phantom tuples): (cas particulier de mise à jour perdue) T3 : Augmentation de 20 du PL# de PILOTE pour les pilotes dont le numéro est inférieur à 100. T4 : Augmentation de 10 % du salaire des pilotes dont le numéro est supérieur à 100. begin T3. update PILOTE set PL# =PL# + 20 where PL# < 100;. end T3 begin T4 update PILOTE set SAL = SAL * 1.10 where PL# > 100; end T4 t Au début de l exécution de T3 et T4, les deux ensembles sont disjoints ; la concurrence ne remet donc pas en danger la cohérence de la base. Par contre les pilotes concernés par T3 qui vont avoir un numéro supérieur à 100 ne vont pas être augmentés par la transaction T3 : ces pilotes sont «fantômes». 50

51 3. Contrôle BD (Transaction) Accès exclusif à une ressource : danger d interblocage (deadlock) 2 Solutions «Détection» : solution libérale retenue dans DB2, INGRES,. «Prévention» : solution conservatrice retenue dans les BD réparties,. Problème d interblocage T5 : Modifie la table AVION et modifie la table VOL. begin T5.. Lock table AVION in excusive mode update AVION set.. lock table VOL in exclusive mode wait wait.. t T6 : Modifie la table VOL et modifie la table AVION. begin T6. lock table VOL in exclusive mode update VOL set. lock table AVION in exclusive mode wait wait.. T5 qui a verrouillé AVION est en attente de VOL; T6 qui a verrouillé VOL est en attente d AVION. Si aucune action n est entreprise, c est l attente infinie ou interblocage entre T5 et T6. L interblocage peut être généralisé à n transactions, avec n>2; il résulte l existence d un cycle dans le graphe d attente Copyright entre transactions. Serge Miranda 51

52 Solution à l interblocage (DB2) Construction d un graphe d attente T5 T6 AVION T5 T6 VOL T : verrou exclusif posé par T T : demande de verrou par T Détection d un cycle dans le graphe d attente, puis choix d une victime (ex : T6) qui devra défaire (ROLLBACK) ses actions. Prévoir un test de présence d interblocage (ex : valeur négative de l indicateur SQLCODE) dans le programme d application. exec sql if sqlcode < 0 (valeur indiquant l interblocage) then do exec sql rollback end Interblocage? «DEADLOCK» MAJ «LIVELOCK» LECTURES 52

53 Verrouillage dans DB2 (complément) Verrouillage physique (pas logique) GRANULARITE VERROU à 3 niveaux : Table, Page, ROW TABLESPACES (contenant une ou plusieurs tables) LOCK TABLE Ti (Verrouillage possible de plusieurs tables localisées dans la même TABLESPACE que Ti). Choix granularité dans paramètre LOCKSIZE de la commande BIND (définition plan d exécution); Granularité fine (LIGNE) grand concurrence, coût élevé. Granularité TABLESPACE concurrence réduite, coût réduit. Verrouillage dans ORACLE) Verrouillage automatique (LIGNE, Lock-U et donc partagée sur table) et explicite (TABLE) Verrou exclusif sur table par : Lock table pilote in exclusive mode no wait 2 Modes de verouillage de base : SHARED et EXCLUSIVE SELECT.. From Where.. For update : pose de verrous lignes en mode exclusif no wait : pas de mise en attatente de libération de verrous GRANULARITE VERROU : ROW SHARE, ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE LOCK ESCALATION automatique ESCALADE («Lock escalation») : la pose de nombreux verrous ligne entraîne l escalade automatique sur un verrou TABLE Mécanismes de multiversion pour assurer les lectures reproductibles Verrous systèmes (mémoire cache..) : «Internal LATCHES», verrous «PARSE» 53

54 3. Contrôle BD (Transaction) Verrouillage dans SQL SERVER 7 de Microsoft Verrouillage LIGNE, pour les données et Index avec choix dynamique de la granularité («dynamic locking» à l execution entre PAGE et LIGNE) Granularité verrou : RowID> Key Index> Page (8K)> Extent (8 pages)>table> DB Niveaux d Isolation de SQL2 Les dangers d interférence n ont pas le même niveau d importance d où la définition de niveaux d isolation NIVEAUX d ISOLATION de ANSI/ISO et SQL2 NIVEAU 0 READ UNCOMMITED : le plus permissif ; garantie d absence de pertes de MAJ ; verrous Exclusifs posés avant écriture et libérés après NIVEAU 1 READ COMMITED : + Cohérence des MAJ : libération des verrous en fin de transaction NIVEAU 2 : READ REPEATABLE : + Cohérence des lectures par ajout d un verrou partagé avant READ et libération en fin de lecture NIVEAU 3 SERIALIZABLE : le plus contraignant avec libération des verrous en fin de transaction ; OK reproductibilité des lectures Note : le niveau 3 des transactions n interdit pas les tuples fantômes 54

55 VERROUILLAGE d INTENTION (2 nouveaux types de verrous) Conséquence granularité : Si T1 verrouille une table, il faut vérifier qu il n existe aucun verrou incompatible (cf matrice de compatibilité, Microsoft) sur chacun des tuples de la table (HIERARCHIE DE VERROUS) Introduction du Verrouillage en intention de lecture et en intention d écriture Nouvelle Règle : avant de verrouiller le tuple RO1, la transaction T1 doit poser un verrou d intention sur la relation R contenant RO1 Si T2 veut verrouiller R il peut y avoir incompatibilté ; par contre T2 peut verrouiller RO2 de T avec un verrouillage d intention compatible sur T Note : IBM a défini 6 nouveaux types de verrous avec 13 Combinaisons possibles, MICROSOFT 2 nouveaux types (Update, Schema..) Matrice de compatibilité Lock Update (LX) ; Lock Read (LR), No (Lock( Lock) L.Upd L. Read no L.X N N O LR No N O O O O O 55

56 Matrice de compatibilité (Verrou d intention) compatibilité VERROUS Intention Read Read Intention Update Update Intention Read OUI OUI OUI READ OUI OUI Intention UPDATE OUI OUI UPDATE 2PC (2-Phase COMMIT) et REPLICATION 1) Systèmes de réplication («SNAPSHOT») : pour DWH, Architecture multi-tier, Internet sans fil.. EX : Oracle 8 : Create SNAPSHOT Volparis as <requête SQL> avec raffraichissements réguliers des copies (complet ou «rapide») ; réplication de tables, index, vue, trigger ou package ARCHITECTURES DE REPLICATION : - architectures maître esclave (DIFFUSION sites primaires, CENTRALISATION, CICULAIRE et CASCADE) - architectures symétriques («update anywhere) avec mises à jour asynchrônes (contrôle centralisé ou réparti) ou synchrônes (2PC et RPC) EX SQL Server de Microsoft : Modèle «PUBLISH and SUBSCRIBE» (Editeur/ Soucripteur) avec 3 types de réplication : SNAPSHOT (read only comme DWH), TRANSACTIONAL (cohérence faible, envoi TI validee) et MERGE (cohérence forte) 2) 2PC : «Two-phase commit»: Protocole de terminaison à 2 phases pour les infostructures réparties (client serveur, réplication, BDR, Teleservice Internet) sur réseau fiable Seule façon d assurer une COHERENCE FORTE EX : dans Oracle 8 : 2PC automatique lors du Commit d une Ti répartie 56

57 3. Contrôle BD (Reprise sur pannes /CRASH RECOVERY et transactions) Mécanismes de Reprise sur panne (DB2) Journal de modification («LOG») et points de reprise Protocole d écriture anticipée sur le journal («write -ahead log protocol») Paradigme faire/défaire/refaire («do, undo, redo») Reprise à chaud / à froid Ecriture sur double («shadow mechanism») d IBM et Oracle («segment de ROLLBACK») mécanisme «Multiversion» avec SCN («System Change Number»)d Oracle Note : FALLBACK de TERADATA JOURNAL DE MODIFICATION (LOG) Seule Opération atomique : E/S d un bloc JOURNAL pour chaque T : IMAGE AVANT de chaque MAJ, IMAGE Après de chaque MAJ, Enregistrement BEGIN, Enregistrement END (Commit, Abort), Enregistrements de SAVE Point, Etat transaction Objectifs de la reprise sur panne : - Modifications des transactions non validées doivent être ignorées - Modifications -//- validées doivent être prises en compte 57

58 Protocole «Faire / défaire / refaire» Ancien état de l objet (image avant ) FAIRE Nouvel état de l objet (image après ) écriture JOURNAL Nouvel état de l objet DEFAIRE Ancien état de l objet JOURNAL lecture Ancien état REFAIRE Nouvel état JOURNAL lecture ECRITURE SUR DOUBLE (Shadow mechanism) 58

59 3. Contrôle BD (Transaction) Reprise à froid Période de la panne initiale re-exécution X X des transaction temps Copie de la base Images après Point de reprise Version de la BD reconstruite Ce type de reprise est long et coûteux ; il concerne les pannes graves ayant détérioré une grande partie de la base de données. Reprise à chaud retour au dernier point de reprise grâce aux images-avant DEFAIRE X temps POINT DE REPRISE Images après PANNE ré-exécution des transaction uniquement «gagnantes» X REFAIRE temps POINT DE REPRISE PANNE Ce type de reprise, auquel on peut rattacher les «reprises d urgence» (GRAY78), est relativement rapide mais ne concerne que les pannes légères, ponctuelles. 59

60 VUES Vues et simplification d accès Ex : vue des pilotes en service create view PILOTE-EN-SERVICE as select PLNOM, VOL#, VD, VA from PILOTE, VOL where PILOTE.PL# = VOL.PL# ; Ex de requête simplifiée : Quels sont les noms des pilotes en service au départ de NICE? select PLNOM from PILOTE-EN-SERVICE where VD = NICE ; 60

61 Vues et indépendance logique Exemple : VUE VOLNICE : create view VOLNICE as select * from VOL where VD = NICE ; Traitement sur cette vue Q1 : Quels sont les noms des pilotes qui assurent un vol au départ de NICE? Select PLNOM from PILOTE, VOLNICE where VOLNICE.PL# = PILOTE.PL# ; Supposons maintenant que le lien N:1 entre VOL et PILOTE devienne un lien N:M; le schéma relationnel doit être modifié de la manière suivante : la table initiale VOL est remplacée par les table de base VOL1 (VOL#, AV#, VD, VA, HD, HA) VOL2 (VOL#, PIL#) Contrôle BD (Vues) Ce qui se fait de la manière suivante (avec le SQL d ORACLE) begin T. create table VOL2( VOL# number(4) references VOL(VOL#), PIL# number(4) references PILOTE(PL#), primary key (VOL#, PIL#) ;. update table VOL set PIL# = NULL ;.. Note : cette dernière opération met la valeur nulle sur les anciennes valeurs de PIL# dans VOL 61

62 Drop view VOLNICE (Suppression ancienne vue) (Création nouvelle vue) create view VOLNICE as select VOL#, PIL#, AV#, VD, VA, HD, HA from VOL, VOL2 where VOL.VD = NICE and VOL.VOL# = VOL2.VOL# ; Le traitement sur la vue (Q1) n est pas modifié : l indépendance logique est assurée MORALE (théorie) : les programmes d application ont intérêt à travailler sur des vues et non sur des tables de base. PB (pratique) : les traitements sur les vues sont héla limités en interrogation et mise à jour! Exemple de limitation sur les vues en interrogation Soit la vue suivante : «TOTALCAP (VILLE, SOMCAP)» contenant les informations sur chaque ville de localisation des avions avec la somme des capacités des avions localisés dans la ville ; create view TOTALCAP (VILLE, SOMCAP) as select LOC, SUM(CAP) from AVION group by LOC ; Q1) select * from TOTALCAP where SOMCAP > 150; Incorrect! Q2) select max (SOMCAP) from TOTALCAP ; Incorrect! Q3) select * from TOTALCAP, PILOTE where TOTALCAP.VILLE = PILOTE.ADR, Incorrect Raison : sémantique du WHERE ou Copyright d une fonction Serge Miranda sur un GROUP BY générant un ensemble de tables?avec ORACLE, SYBASE,. 62

63 Contrôle BD (Vues) Exemples de limitations sur les vues en mise à jour Une vue peut être mise à jour si : pas de fonction ni de DISTINCT dans SELECT une seule table dans FROM pas de sous-requête dépendante dans WHERE pas de GROUP BY, ni HAVING, ni ORDER ni UNION Contrainte de sécurité Propriété CRUDE C : Column R : References U : User Contrainte utilisateur Contrainte de confidentialité Contrainte d intégrité TRIGGER («déclencheur») D : Domain E : Entity / Relation ALERTER («alerter») 63

64 Déclencheur (TRIGGERS) La plupart des SQL commercialisés autorisent la définition de déclencheurs («triggers»), permettant de prendre en compte des contraintes de mise à jour sur les données. Parmi ces contraintes considérons : l intégrité d entité, l intégrité de référence, et montrons leur traitement en utilisant des déclencheurs. La forme syntaxique générale d un déclencheur est la suivante (SQL-SERVER) : create trigger nom-déclencheur on nom-table for {inser / update / delete } as requête SQL ** ne générant pas de résultat ligne if update nom.colonne [and /or update.] Vérification d intégrité d entité avec des déclencheurs Supposons que la clé primaire de PL# n a pas d index de type UNIQUE dessus ; nous pouvons définir le déclencheur suivant : create trigger unicité - clé - PL# on PILOTE for insert as if (select count (*) from PILOTE, inserted where PILOTE.PL# = inserted.pl#) 1 begin rollback transaction print «Problème d intégrité d entité :» print «La valeur de la clé PL# doit être unique» end 64

65 Vérification d intégrité de référence avec des déclencheurs Suppression d une ligne dans PILOTE entraînant par «cascade» la suppression de lignes dans les tables VOL et FORMATION ayant le même numéro de pilote. create trigger cascade-suppression on PILOTE for delete as delete * from VOL, deleted where VOL.PL# = deleted.pl# **suppression dans vol and delete * from FORMATION, deleted where FORMATION.PL# = deleted.pl# Insertion dans vol : vérification de l existence des numéros de PILOTE et d AVION dans les tables PILOTE et AVION. create trigger vérification-existence on VOL for insert as if not exists (select * from PILOTE, inserted where PILOTE.PL# = inserted.pl#) or not exists (select * from AVION, inserted where AVION.AV# = inserted.av# ) begin rollback transaction print «Insertion impossible due à la vérification» print «de l intégrité de référence» End else print «Insertion effectuée car les numéros» print «de pilote et d avion existent» 65

66 Client - Serveur Communication et connexion client-serveur SQL2 offre un verbe permettant d établir explicitement des connexions client-serveur (mono ou multi-serveurs). Un programme d application peut ouvrir ou fermer une connexion SQL avec un serveur par les verbes CONNECT (création, connexion), SET CONNECTION (re-activation d une connexion), et DISCONNECT. Exemple : connect to MBDS-SERVEUR <Etablissement d une connexion avec le serveur SQL du MBDS > Disconnect all API SQL2 Interfaces de programmation L application (API) avec SQL - SQL dynamique, - intégration dans langage hôte («embedded SQL»), - langage du module. SQL dynamique : Trois types de verbes SQL dynamiques : execute immediate prepare from et execute; (deallocate prepare pour la supprimer); prepare from et manipulation des curseurs. (open, fetch, close, update et delete current). SQLDA («SQL descriptor area») 66

67 API SQL2 Intégration dans langage hôte exec sql begin and declare section. Langage du module Le langage de module est un petit langage pour écrire des requêtes SQL. MODULE : = ensemble de procédures PROCEDURE : = un ensemble de définitions, de paramères et une seule requête SQL exprimée avec ces paramètres. IV CRITIQUES DE SQL 67

68 Critiques de SQL SQL et l'algèbre relationnelle : SQL n est pas un. «bon» langage relationnel! SQL et les langages de programmation : SQL n est pas un. «bon» langage de programmation! Critiques de SQL Absence de fermeture de SQL Le résultat d un requête n est pas un ensemble GROUP BY transforme une table en un ensemble de tables. CONNECT BY ( de SQL+) génère une liste ordonnée hiérarchiquement. = = = = = > pas d imbrication généralisée comme avec l algèbre relationnelle. 68

69 Critiques de SQL Imbrication «statique» select - from - where correspond à une imbrication algébrique particulière : projection (sélection (jointure (T1, T2, ))) PB : Ecriture de selection (projection (jointure (T1, T2,...))) DIVISION () traduit par NOT EXISTS : x Px x P(x) JOINTURE () traduite par. EXISTS PB : Ecriture de x y P(x, y) # y x P(x, y) Dans le langage algébrique, il suffit de spécifier l odre des opérateurs de jointure et de division Pb du GROUP BY : sémantique? Quels sont les avions conduits par plus de 2 pilotes? Envie d écrire : select AV#, count(pl#) from VOL where count (PL#) > 2 ; C est.. FAUX! = = => penser au GROUP BY qui requiert un réflexe procédural select AV#, count(pl#) from VOL group by AV# having count (PL#) > 2; 69

70 Critiques de SQL SQL et les langages de programmation SQL.. N est pas un «bon» langage de programmation! «ORTHOGONAL design maximizes expressive power while avoiding deleterious superfluities». A. WIJNGAARDEN et al (sur ALGOL 68) SQL n est pas un langage ORTHOGONAL Indépendance des concepts sans confusion ex : l argument d une fonction ne peut être une fonction l argument de FROM ne peut pas être SFW! Pas de syntaxe homogène pas de FERMETURE contraintes sur manipulation VUE (imbrication) GROUP BY transforme une table en un ensemble de table (sémantique?) = = > pas dans VUE 4 classes d objet en SQL : TABLE, COLONNE, LIGNE, VALEUR Types d opérateur sur l objet d un langage objet : constructeur comparaison d objets assignation valeur extracteur syntaxe générale Copyright récursiveserge Miranda 70

71 Critiques de SQL SQL : pas d opérateur constructeur de table (partiellement pour ligne et colonne). Pas d opérateur de comparaison (table, colonne, ligne) sauf pour les valeurs, pas d opérateur d assignation pour les colonnes, pas de syntaxe définie récursivement. Note : un langage relationnel n est pas orthogonal par construction. Manque d'orthogonalité au niveau des fonctions Quel est la somme des capacités des avions localisés à Nice? Envie d écrire : sum (select CAP from AVION where LOC = NICE ) ; C est Faux! La forme correcte est : select sum (CAP) from AVION where LOC = NICE ; L argument de la fonction SUM est toute la colonne du résultat de sorte qu une syntaxe plus naturelle serait la première solution. 71

72 Vues et imbrication Utilisation d un vue dans la clause FROM - - -> imbrication (partielle) Exemple : Vue AVIONNICE create view AVIONNICE as select * from AVION where LOC = NICE ; Question sur la vue select * from AVIONNICE where CAP > 250; Question traitée par SQL sur la table des base select * from AVIONNICE where CAP > 250 and LOC = NICE ; from et imbrication Considérons les 2 vues suivantes : VOLNICE : vols au départ de NICE VOPARIS : vols au départ de PARIS Vols au départ de NICE ou de PARIS? Clause FROM généralisée (naturellement) : select * from (VOLNICE union VOLPARIS) ; C est. Faux! La requête SQL correcte est : select * from VOLNICE union select * from VOLPARIS ; 72

73 Optimiseur de requêtes Optimiseur SQL (SQL - DS et DB2) Outils pour affiner le coût de traitement des requêtes SQL (fréquentes). Optimiseur de requêtes : syntaxique : propriétés des opérateurs sémantique : règles de transformation statistiques : basées sur utilisation 73

74 Optimiseur SQL 2 questions équivalentes Q1) select PLNOM, ADR from PILOTE where PL# in (select PL# from VOL where VD = NICE ) ; Q2) select PLNOM, ADR from PILOTE, VOL where PILOTE.PL# = VOL.PL# and VOL.VD = NICE ; Optimiseur SQL (statistiques) 2 temps de réponse différents! SQL - DS Informations sur les performances d une requêtes via la commande EXPLAIN (permettant de choisir la requête la plus performante) Chemins d accès : - séquentiels : lecture de toutes les pages de la DBSPACE. - indexés : lecture d abord des pages d index, puis des pages référencés dans l index. = = => réduction du nombre de pages lues. Calcul du coût d un chemin à partir des statistiques d utilisation conservées dans le dictionnaire. - nombre d E/S par chemin - temps de traitement UC par chemin - temps de tri = = = = => Estimation du nombre de pages nécessaires. 74

75 Optimiseur SQL (statistiques) DBSPACE DBSPACE contenant des lignes de Pilote (P-ligne) et de vol (V-ligne) ainsi qu un index sur Vol (vol X) et un index sur Pilote (P-x). V - x V - x P - x P - x P - ligne P - ligne V - ligne V - ligne V - ligne P - ligne P - ligne V - ligne Représentation de quelques pages de la DBSPACE (Certaines contiennent des lignes des tables Pilote et Vol). lecture des informations sur Vol : séquentiel : lecture de 16 pages indexé : lecture de Copyright 6 pages (dont Serge 2 Miranda d index) Optimiseur SQL (statistiques) Types de qualification SQL 3 types de prédicat (dans where), reconnus dans SQL-DS : (1) Clé («Key domain») : prédicat mettant en jeu (la) une clé d index associée à toute table (2) Argument de recherche («sargable») prédicat vérifié ligne à ligne sur un résultat (IN, LIKE, ANY, ALL ne sont pas «sargable») (3) Résiduel («résidual») : tout autre prédicat Performances système : (1) >> (2) >> (3) 75

76 Optimiseur SQL Commande SQL Architecture SQL - DS évaluation Prédicat Data System Control (DSC) résiduel Relational Data System (RDS) Clé sargable Data Base Stokage Subsystem (DBSS) BD Optimiseur SQL Estimation du meilleur chemin Statistique passées d utilisation Mise à jour des tables statistiques par la commande administrateur (donc non automatique après chaque modification de table) : update statistics (runstats en DB2) Explain Compilation SQL quelque soit le mode d interaction explain { cost, plan, reference, structure, all }[ set queryno = < entier >] pour identifier le résultat d EXPLAIN dans les tables d estimation (NULL par défaut) for < requête SQL > 76

77 Optimiseur SQL Information sur tout chemin répertorié dans 4 tables COST TABLE (3 colonnes) QUERYNO : identification des lignes de la requête BLOCKNO : identification des parties d une sous-requêtes (= 1 : externe, = 2 : interne,.) COST : coût requêtes ou sous-requêtes = = => Le coût de la requête apparaît face à la valeur 1 de QBLOCKNO PLAN TABLE (12 colonnes) :<Définition des index d accès à chaque table> QUERYNO, BLOCKNO, PLANNO : identification des étapes de traitement d une requête ACCESSTYPE : I : indéxé, R : séquentiel, W : indexé non sélectif SORTNEW : N : pas de tri, Y : tri avec duplicata U : tri sans duplicata. Optimiseur SQL REFERENCE TABLE (8 colonnes) QUERYNO BLOCKNO TNAME COLNO : numéro de la colonne référencée FILTRE : pourcentage de lignes satisfaisant la requête ( 1 : peu de sélectivité) DETAIL W : clé J : colonne de jointure O : colonne de tri G : colonne de Group by = = => Description des références aux colonnes de la requête (recherche des «bonnes colonnes») 77

78 Optimiseur SQL STRUCTURE TABLE (6 colonnes) QUERYNO BLOCKNO TIMES PARENT ATOPEN ROWCOUNT : estimation du coût de chaque bloc de requête = = => Description des liens entre sous-requêtes. explain cost set queryno = 1 for Q1 COST TABLE QUERYNO QBLOCKNO COST explain plan, reference for Q2 PLAN TABLE QUERYNO TNAME ACCESS TYPE ACCESS NAME 1 PILOTE W P - x 2 VOL W V - x REFERENCE TABLE TNAME CNAME FILTER DEFAIL VOL VD 1.00 E 01 W PILOTE PL# 5.20 E 02 W J VOL PL# 5.20 E 02 W J 78

79 ORACLE 8 l optimiseur choisit un «plan d execution» de requête et évalue un coût pour chaque plan STATISTIQUES dans le dictionnaire des données avec commande SQL «ANALYZE» Génération de statistiques sur - le nombre de tuples dans une table -l espace physique utilisée pour stocker une table avec gestion dynamique de leur évolution Possibilité de donner des indications («hints») à l optimiseur sur plan d execution souhaité : Ex : Select.. + INDEX (ADR) From Pilote, Vol Where ADR = Nice and SQL SERVER de Microsoft REFERENCE TNAME CNAME FILTER - Représentation graphiquedu plan d execution DEFAIL TABLE - lancement de VOL l assistant d index VD (3index 1.00 Tuning E 01Wizard») pour optimiser W requête - statistiques d accès PILOTE dans dictionnaire PL# 5.20 E 02 W J VOL PL# 5.20 E 02 W J «Cuisine» SQL Bonnes règles d écriture de requête SQL Utilisation de types de données compatibles (éviter les conversions), éviter la clause Not > prédicat résiduel (utiliser chaque fois que possible la négation dans le prédicat), utiliser IN à la place de OR pour une qualification multiple sur la même colonne, where CAP in (250, 300, 350) préférable à where CAP = 250 or CAP = 300 or CAP = 350 utiliser UNION à la place de OR pour une qualification multiple multi-colonne, select * form AVION where CAP > 250 union select * from AVION where ADR = PARIS ; préférable à select * from AVION where CAP > 250 or ADR = PARIS ; (pas d utilisation d index avec OR) 79

80 «Cuisine» SQL Règles de cuisine (suite) éviter les opérateurs OR > UNION NOT > comparaison avec clause = / = isoler les colonnes dans les conditions where CAP + 10 > > where CAP > 190 éviter le IN IN (a, b, c) > OR ou UNION IN sous-requête > jointure prédicative Optimisation INDEX : implantation sous forme de B-arbre espace diminue mise à jour diminue interrogation augmente PCTFREE : pourcentage de page laissée libre pour une mise à jour ultérieur de l index create index PX on PILOTE (DR) pctfree = 10 (10 %) pas de création d index «UNIQUE» possible sur un attribut ayant des duplicats index enlever les valeurs dupliquées et les isoler par : slect COLONNE from TABLE group by COLONNE having count (*) > 1 sur clé primaire / candidate / étrangère attribut des clauses WHERE, GROUP BY, ORDER 80

81 Optimiseur SQL Conception schéma SQL espace physique disponible mise à jour élevée (= = = = => normalisation) interrogation élevée (= = = = => dénormalisation) sécurité dernier recours pour une interrogation élevée requête Q : jointure coûteuse select PLNOM from PILOTE, VOL where PILOTE.PLNUM = VOL.PLNUM and VD = NICE ; rajout de l attribut PLNOM dans VOL (redondance logique). Q devient : select PLNOM from VOL where VD = NICE ; Conception schéma SQL ne pas utiliser les groupes de répétitions (GR) ex1 : GR : même segment répété ENFANTS PILNUM PRENOM1 PRENOM2 PRENOM3 100 ELODIE GUILHEM EMMA 101 PAUL?? 102 SERGE MICHEL? Requête : Quel est le nombre d enfant pour chaque pilote? select PILNUM, 0 from ENFANTS where PRENOM1 is null and PRENOM2 is null and PRENOM3 is null union select PILNUM, 1 from ENFANTS where PRENOM1 is not null and PRENOM2 is null and PRENOM3 is null. union select PILNUM, 0 from PILOTE where PILNUM is not in (selct PILNUM) from ENFANTS) 81

82 Optimiseur SQL ex 2 : ENFANT (PILNUM, PRENOM) select PILNUM, count(*) from ENFANTS group by PILNUM union (1) ne pas combiner de colonnes Adresse doit être remplacé par : NUMERO RUE VILLE CP.Choisir le même type pour des colonnes à comparer. S ANTE Q UALITE DE VIE L IBERTE Bon SQL * 82

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet [email protected] http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI [email protected]

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Introduction au Système de Gestion de Base de Données et aux Base de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

Implémentation des SGBD

Implémentation des SGBD Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

LE LANGAGE SQL2 1. INTRODUCTION

LE LANGAGE SQL2 1. INTRODUCTION LE LANGAGE SQL2 1. INTRODUCTION Les serveurs de données relationnels présentent aujourd hui une interface externe sous forme d un langage de recherche et mise à jour, permettant de spécifier les ensembles

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Réplication des données

Réplication des données Réplication des données Christelle Pierkot FMIN 306 : Gestion de données distribuées Année 2009-2010 Echange d information distribuée Grâce à un serveur central Une seule copie cohérente Accès à distance

Plus en détail

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions 1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Intégrité sémantique dans les bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

Présentation du module Base de données spatio-temporelles

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

Module BDR Master d Informatique (SAR)

Module BDR Master d Informatique (SAR) Module BDR Master d Informatique (SAR) Cours 6- Bases de données réparties Anne Doucet [email protected] 1 Bases de Données Réparties Définition Conception Décomposition Fragmentation horizontale et

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les clusters de table

Plus en détail

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007 Bases de Données Réparties Concepts et Techniques Matthieu Exbrayat ULP Strasbourg - Décembre 2007 1 Définition Une base de données répartie (distribuée) est une base de données logique dont les données

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Introduction aux SGBDR

Introduction aux SGBDR 1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte [email protected] 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé

Plus en détail

Session S12 Les bases de l optimisation SQL avec DB2 for i

Session S12 Les bases de l optimisation SQL avec DB2 for i Session S12 Les bases de l optimisation SQL avec DB2 for i C. GRIERE [email protected] STG Lab Services IBM i Avril 2012 Les fleurs et les requêtes SQL Lorsque l on veut planter de nouvelles fleurs dans

Plus en détail

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions Exemple accessible via une interface Web Une base de données consultable en ligne : Bases de données et systèmes de gestion de bases de données The Trans-atlantic slave trade database: http://www.slavevoyages.org/tast/index.faces

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

Les bases de l optimisation SQL avec DB2 for i

Les bases de l optimisation SQL avec DB2 for i Les bases de l optimisation SQL avec DB2 for i Christian GRIERE [email protected] Common Romandie 3 mai 2011 Les fleurs et les requêtes Lorsque l on veut planter de nouvelles fleurs dans un jardin il

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer Bases de Données Réparties Définition Architectures Outils d interface SGBD Réplication SGBD répartis hétérogènes BD réparties Principe : BD locales, accès locaux rapides accès aux autres SGBD du réseau

Plus en détail

Bases de Données Réparties

Bases de Données Réparties Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur

Plus en détail

Master Exploration Informatique des données DataWareHouse

Master Exploration Informatique des données DataWareHouse Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : [email protected]

Plus en détail

Introduction aux Bases de Données

Introduction aux Bases de Données Introduction aux Bases de Données I. Bases de données I. Bases de données Les besoins Qu est ce qu un SGBD, une BD Architecture d un SGBD Cycle de vie Plan du cours Exemples classiques d'applications BD

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

UNION INTERCEPT SELECT WHERE JOINT FROM ACID STOCKAGE TRANSACTION, SÉRIALISABILITÉ, NIVEAUX D'ISOLATION 1 BASE RELATIONNELLE Un serveur de données relationnel : Rend compte de la «réalité» sous forme de table Met en relation la perception logique

Plus en détail

MySQL / SQL EXEMPLES

MySQL / SQL EXEMPLES MySQL_exemples_janv04_mpT EXEMPLES 1 MySQL / SQL EXEMPLES Typologie du langage Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage (en langage C par exemple), ainsi

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Bases de données Cours 1 : Généralités sur les bases de données

Bases de données Cours 1 : Généralités sur les bases de données Cours 1 : Généralités sur les bases de données POLYTECH Université d Aix-Marseille [email protected] http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 1 Qu est ce qu une

Plus en détail

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours [email protected] UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Configurer la supervision pour une base MS SQL Server Viadéis Services

Configurer la supervision pour une base MS SQL Server Viadéis Services Configurer la supervision pour une base MS SQL Server Référence : 11588 Version N : 2.2 : Créé par : Téléphone : 0811 656 002 Sommaire 1. Création utilisateur MS SQL Server... 3 2. Configuration de l accès

Plus en détail

Introduction aux Bases de Données 2004/2005

Introduction aux Bases de Données 2004/2005 Introduction aux Bases de Données 2004/2005 Chapitre 6: Le langage SQL Ecole Nationale Supérieur de Physique de Strasbourg Christian Wolf [email protected] 6.1 Stockage physique Film numfil

Plus en détail

TP11 - Administration/Tuning

TP11 - Administration/Tuning TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

Bases de Données. Plan

Bases de Données. Plan Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle

Plus en détail

Données Réparties. Thibault BERNARD. [email protected]

Données Réparties. Thibault BERNARD. thibault.bernard@univ-reims.fr Données Réparties Thibault BERNARD [email protected] Sommaire Introduction Gestion de la concurrence Reprise après panne Gestion des données dupliquées Sommaire Introduction Gestion de la

Plus en détail

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 Loïc Maisonnasse 1 Objectif Ce TD a pour objectif de vous familiariser avec le langage de requêtes SQL. Et de vous apprendre à écrire des requêtes SQL pour

Plus en détail

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012 Initiation à SQL Le langage de communication avec une base de données relationnelles Application avec PostgreSQL Nathalie Camelin 2011/2012 Université du Maine Institut Claude Chappe D'après Levy Estève

Plus en détail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation

Plus en détail

Chapitre 10. Architectures des systèmes de gestion de bases de données

Chapitre 10. Architectures des systèmes de gestion de bases de données Chapitre 10 Architectures des systèmes de gestion de bases de données Introduction Les technologies des dernières années ont amené la notion d environnement distribué (dispersions des données). Pour reliér

Plus en détail

FileMaker 13. Guide de référence SQL

FileMaker 13. Guide de référence SQL FileMaker 13 Guide de référence SQL 2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

Sybase Adaptive Server Enterprise 15

Sybase Adaptive Server Enterprise 15 Sybase Adaptive Server Enterprise 15 Prêt pour Sybase Adaptive Server Enterprise 15? Novembre 2006 Documentation technique # 29 Introduction Cette présentation liste les fonctionnalités importantes de

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

2 Serveurs OLAP et introduction au Data Mining

2 Serveurs OLAP et introduction au Data Mining 2-1 2 Serveurs OLAP et introduction au Data Mining 2-2 Création et consultation des cubes en mode client-serveur Serveur OLAP Clients OLAP Clients OLAP 2-3 Intérêt Systèmes serveurs et clients Fonctionnalité

Plus en détail

Partie II Cours 3 (suite) : Sécurité de bases de données

Partie II Cours 3 (suite) : Sécurité de bases de données Partie II Cours 3 (suite) : Sécurité de bases de données ESIL Université de la méditerranée [email protected] http://odile.papini.perso.esil.univmed.fr/sources/ssi.html Plan du cours 1 Introduction

Plus en détail

Module BDR Master d Informatique (SAR)

Module BDR Master d Informatique (SAR) Module BDR Master d Informatique (SAR) Cours 9- Transactions réparties Anne Doucet [email protected] Transactions réparties Gestion de transactions Transactions dans un système réparti Protocoles de

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail