bases de données relationnelles - [cedric]cedric.cnam.fr/vertigo/cours/ensta/slides.pdf ·...

of 255/255
Vertigo/CNAM, Paris 1 Bases de Données Relationnelles Cours SGBD - Module 6A - ENSTA M. Scholl, B. Amann http://cedric.cnam.fr/vertigo/Cours/ENSTA Septembre 2001

Post on 10-Sep-2018

232 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Vertigo/CNAM, Paris 1

    Bases de Donnes RelationnellesCours SGBD - Module 6A - ENSTA

    M. Scholl, B. Amann

    http://cedric.cnam.fr/vertigo/Cours/ENSTA

    Septembre 2001

  • Vertigo/CNAM, Paris 2

    INTRODUCTION

  • Vertigo/CNAM, Paris 3

    OBJECTIF DU COURS?

    OBJECTIF: Comprendre et maitriser la technologie des systmes de bases de donnesrelationnelle:

    Modlisation des donnes

    Interrogation des donnes: valuation des requtes

    Mises--jour des donnes: concurrence et transactions

    Intgration des donnes: entrepts de donnes, mdiateurs

    Architectures et applications nouvelles: Web, portails, ...

    Et tout a en 21 heures?

  • Vertigo/CNAM, Paris 4

    PLAN

    1. Introduction

    2. Modle Relationnel

    3. Calcul et Algbre Relationnel

    4. SQL

    5. Organisation Physique, Index

    6. Algorithmes de Jointure

    7. Optimisation des requtes: lexemple dORACLE.

  • Vertigo/CNAM, Paris 5

    BIBLIOGRAPHIE

    Ouvrages en franais

    1. Date C.J, Introduction aux Bases de Donnes, Vuibert, 970 Pages, Janvier 2001

    2. Carrez C., Des Structures aux Bases de Donnes, Masson

    Ouvrages en anglais

    1. R. Ramakrishnan et J. Gehrke, DATABASE MANAGEMENT SYSTEMS, MacGraw

    Hill

    2. R. Elmasri, S.B. Navathe, Fundamentals of database systems, 3e dition, 1007

    pages, 2000, Addison Wesley

    3. Ullman J.D. and Widom J. A First Course in Database Systems, Prentice Hall, 1997

    4. Garcia-Molina H., Ullman J. and Widom J., Implementation of Database Systems,

    Prentice Hall, 1999

  • Vertigo/CNAM, Paris 6

    5. Ullman J.D., Principles of Database and Knowledge-Base Systems, 2 volumes,

    Computer Science Press

    6. Abiteboul S., Hull R., Vianu V., Foundations of Databases, Addison-Wesley

    Le standard SQL

    1. Date C.J., A Guide to the SQL Standard, Addison-Wesley

    Trois Systmes

    1. Date C.J., A Guide to DB2, Addison-Wesley

    2. Date C.J., A Guide to Ingres, Addison-Wesley

    3. ORACLE version 7 Server Concepts Manual 1992 Oracle

  • Vertigo/CNAM, Paris 7

    Applications SGBD

    1. CLASSIQUES:

    Donnes de Gestion (salaires, stocks, rservations davions)

    Applicationes Transactionnelles (gestion de comptes bancaires, centrales

    dachat)

    2. MOINS CLASSIQUES:

    Documents lectroniques

    Donnes Spatiales

    3. A LA MODE:

    Donnes du Web: HTML, XML

    Entrepts de donnes

    Portails dentreprise

  • Vertigo/CNAM, Paris 8

    Comment Stocker et Manipuler les Donnes?

    DONNES BASE DE DONNES (B.D.) Une B.D. est un GROS ENSEMBLE dinformations STRUCTURES mmorises

    sur un support PERMANENT.

    LOGICIEL SYSTME de GESTION de B.D. (S.G.B.D) Un Systme de Gestion de Bases de Donnes (SGBD) est un logiciel de HAUT

    NIVEAU qui permet de manipuler ces informations.

  • Vertigo/CNAM, Paris 9

    Diversit Complexit

    Diversit des utilisateurs, des interfaces et des architectures:

    1. utilisateurs : administrateurs, programmeurs, non informaticiens, . . .

    2. interfaces : langages de programmation, saisie de donnes, gnration de rapports,autres SGBD . . .

    3. architectures : donnes centralises, distribues, htrognes

  • Vertigo/CNAM, Paris 10

    En Rsum, un SGBD ...

    ... est un OUTIL GNRIQUE qui doit rpondre des besoins trs divers de gestionde un GROS VOLUME DINFORMATIONS

    persistantes (annes) et fiables (protection sur pannes)

    partageables (utilisateurs, programmes)

    manipules indpendamment de leur organisation physique

  • Vertigo/CNAM, Paris 11

    ARCHITECTURE dun SGBD : ANSI-SPARC (1975)

    vue 1 vue 2

    NIVEAU EXTERNE

    vue 3

    NIVEAU LOGIQUE

    NIVEAU PHYSIQUE

  • Vertigo/CNAM, Paris 12

    FONCTIONNALITS dun SGBD

    Chaque niveau du SGBD ralise un certain nombre de fonctions :

    NIVEAU PHYSIQUE

    Accs aux donnes sur mmoire secondaire (disques), index, ...

    partage de donnes et gestion de la concurrence daccs

    reprise sur pannes (fiabilit)

    distribution et interoprabilit

  • Vertigo/CNAM, Paris 13

    NIVEAU LOGIQUE

    Dfinition de la structure de donnes : Langage de Description de Donnes (LDD)

    Consultation et Mise Jour des donnes : Langages de Requtes (LR) et Langage de

    Manipulation de Donnes (LMD)

  • Vertigo/CNAM, Paris 14

    NIVEAU EXTERNE : Vues Utilisateurs

    1. Vue de la planification des salles : pour chaque cours

    Nom de Prof

    Horaires et salles

    2. Vue de la paye : un ensemble de Prof

    (nom, prnom, adresse, indice, nombre dheures. . . )

    3. Vue du service de scolarit (suivi des lves) : . . .

  • Vertigo/CNAM, Paris 15

    Intgration de ces Vues

    1. On laisse chaque usager avec sa vision du monde

    2. PASSAGE DU NIVEAU EXTERNE AU NIVEAU LOGIQUE:

    On intgre lensemble de ces vues en une description unique: SCHMALOGIQUE

  • Vertigo/CNAM, Paris 16

    Modlisation des donnes

  • Vertigo/CNAM, Paris 17

    Modles de donnes

    Un modle de donnes est caractris par :

    une structuration des informations et

    des oprations sur ces structures

  • Vertigo/CNAM, Paris 18

    Dans un SGBD, il existe plusieurs modles plus ou moins abstraits des mmesobjets, e.g. :

    le modle conceptuel : la description du systme dinformation

    le modle logique : interface avec le SGBD

    le modle physique : fichiers

    ces diffrents modles correspondent aux niveaux dans larchitecture dun SGBD.

  • Vertigo/CNAM, Paris 19

    Modle Conceptuel: Exemple Entit-Relation

    Modle trs abstrait, pratique pour :

    lanalyse du monde rel

    la conception du systme dinformation

    la communication entre diffrents acteurs de lentreprise

    Mais nest pas associ un langage.

    DONC UNE STRUCTURE

    MAIS PAS

    DOPRATIONS

  • Vertigo/CNAM, Paris 20

    Modle logique

    1. Langage de dfinition de donnes (LDD) pour dcrire la structure.

    2. Langage de manipulation de donnes (LMD) pour appliquer des oprations auxdonnes.

    Ces langages sont abstraits :

    1. Le LDD est indpendant de la reprsentation physique des donnes.

    2. Le LMD est indpendant de limplantation des oprations.

  • Vertigo/CNAM, Paris 21

    Les avantages de labstraction

    1. Simplicit daccs: les structures et les langages sont plus simples, donc plus facilespour lusager non expert.

    2. INDPENDANCE PHYSIQUE: on peut modifier limplantation physique (index,stockage, ...) sans modifier les programmes dapplication

    3. INDPENDANCE LOGIQUE: on peut modifier les programmes dapplicationsans toucher limplantation.

  • Vertigo/CNAM, Paris 22

    HISTORIQUE DES SGBD

    chaque gnration correspond un modle logique

    Les premiers taient peu abstraits (navigationnels)

    60 S.G.F. (e.g. COBOL)mi-60 HIRARCHIQUE IMS (IBM) navigationnel

    RSEAU (CODASYL) navigationnel

    73-80 RELATIONNEL dclaratif

    mi-80 RELATIONNEL explosion sur micro

    Fin 80 RELATIONNEL ETENDU nouvelles applications

    DATALOG (SGBD dductifs) pas encore de march

    ORIENT-OBJET navig. + dclaratif

    Fin 90 HIRARCHIQUE (XML) nouvelles applications Web

  • Vertigo/CNAM, Paris 23

    Oprations sur les donnes

  • Vertigo/CNAM, Paris 24

    Exemples doprations

    Insrer les informations pour lemploy Jean

    Augmenter le salaire de Jean de 10%

    Supprimer les informations de Jean

    Chercher les employs cadres

    Chercher les employs du dpartement comptabilit

    Chercher le salaire moyen des employs comptables, avec deux enfants, ns avant 1960

    et travaillant Paris

  • Vertigo/CNAM, Paris 25

    Quels types doprations ?

    4 types doprations classiques dans un SGBD:

    1. La cration (ou insertion) de donnes.

    2. La modification de donnes.

    3. La destruction de donnes.

    4. La recherche de donnes.

    Ces oprations correspondent des manipulations de donnes (LMD) et sont appels des

    requtes. La plus complexe est la recherche en raison de la varit des critres.

  • Vertigo/CNAM, Paris 26

    Le Traitement dune Requte

    ANALYSE SYNTAXIQUE

    OPTIMISATIONGnration (par le SGBD) dun programme optimis partir de la connaissance de

    la structure des donnes, de lexistence dindex, de statistiques sur les donnes.

    EXCUTION POUR OBTENIR LE RSULTAT.NB : on doit tenir compte du fait que dautres utilisateurs sont peut-tre en train de

    modifier les donnes quon interroge !

  • Vertigo/CNAM, Paris 27

    Concurrence daccs

    Architecture Client-Serveur: plusieurs clients (utilisateurs, applications) doivent pouvoir

    accder en mme temps aux mmes donnes.

    Le SGBD doit savoir :

    Grer les conflits si les deux font des mises--jour sur les mmes donnes.

    Offrir un mcanisme de retour en arrire si on dcide dannuler des modifications en

    cours.

    Donner une image cohrente des donnes si lun fait des requtes et lautre des

    mises--jour.

    Le but : viter les blocages, tout en empchant des modifications anarchiques.

  • Vertigo/CNAM, Paris 28

    Concurrence daccs: Exemple

    Deux clients (A et B) partagent un compte bancaire (X): client A retire 100 euros du

    compte X et client B dpose 20 euros sur le mme compte :

    compte X client A client B

    1 500 U=read(X)

    2 500 V=read(X)

    3 500 write(X,U-100)

    4 400 write(X,V+20)

    5 520

    Quest-ce qui sest pass?

    Solutions: verrouillage, estampillage

  • Vertigo/CNAM, Paris 29

    Revenons aux Utilisateurs dun SGBD

    Ladministrateur de la base

    Rle de ladministrateur/concepteur

    discute avec les diffrents utilisateurs

    conception dun schma logique (et des diffrentes vues)

    conception du schma physique

    installation de la base et rglages fins (tuning)

    gre lvolution de la base (nouveaux besoins, utilisateurs)

    Outils sa disposition fournis par lditeur du SGBD

  • Vertigo/CNAM, Paris 30

    Utilisateur expert: informaticien connaissant langages programmation et langagesBD

    Concepteur et programmeur dapplicationcrit les applications pour des utilisateurs nafs

    Utilisateur naf: du non-spcialiste des SGBD au non-informaticien.

  • Vertigo/CNAM, Paris 31

    LE MODLE RELATIONNEL

    Prsentation Gnrale

  • Vertigo/CNAM, Paris 32

    Exemple de Relation

    Loic

    Nadia

    Loic

    Julien

    Marie

    Espace

    Espace

    R5

    R25

    ZX

    1988

    1989

    1978

    1989

    1993

    VEHICULE Proprietaire Type Annee

    n-uplet

    Nom de la Relation Nom dAttribut

  • Vertigo/CNAM, Paris 33

    Le Modle Relationnel sur un Exemple

    Schma Entits-Relations (ER):

    PRIX

    FOURNITFOURNISSEURS PRODUITS

    QUANTITE BALANCE

    CLIENTSCOMMANDE

    C_ADRESSE

    FADRESSE

    FNOM PNOM

    NUM_COMDE NOM

  • Vertigo/CNAM, Paris 34

    FOURNISSEUR FNOM FADRESSE

    Abounayan 92190 Meudon

    Cima 75010 Paris

    Preblocs 92230 Gennevilliers

    Sarnaco 75116 Paris

    FOURNITURE FNOM PNOM PRIX

    Abounayan sable 300

    Abounayan briques 1500

    Preblocs parpaing 1200

    Sarnaco parpaing 1150

    Sarnaco ciment 125

  • Vertigo/CNAM, Paris 35

    COMMANDES NUM_COMDE NOM PNOM QUANTITE

    1 Jean briques 5

    1 Jean ciment 10

    3 Paul briques 3

    4 Paul parpaing 9

    5 Vincent parpaing 7

    CLIENTS NOM CADRESSE BALANCE

    Jean 75006 Paris -12000

    Paul 75003 Paris 0

    Vincent 94200 Ivry 3000

    Pierre 92400 Courbevoie 7000

  • Vertigo/CNAM, Paris 36

    Terminologie et Dfinitions

  • Vertigo/CNAM, Paris 37

    Base de Donnes: Domaine, Nuplet, Relation

    Un DOMAINE est un ensemble (fini ou infini) de valeurs.

    Exemples : , !#" !%$" $&(''') , *+,-./ lensembledes chanes de caractres, *+,-./1023546 lensemble des chanes de caractres delongueur 10.

    Un NUPLET est une liste de valeurs 087:9;'(''@4 .Exemples: 0BADC EF;GHJILK&ILAMNAPO3IQEF8RABR54 , 02!SAUTV3IWXAYNADEZ-\[G]ORA8_^!4

    Le PRODUIT CARTSIEN ` 9 a ''(' a ` > entre des domaines ` 9 (''' estlensemble de tous les n-uplets 0U7 9 '('' 4 o 7cbed ` b .

    Une RELATION est un sous-ensemble fini dun produit cartsien ` 9 a ''(' a ` > . Une BASE DE DONNES est un ensemble de relations.

  • Vertigo/CNAM, Paris 38

    Schma de Bases de Donnes

    Un ATTRIBUT est dfini par un nom et un domaine.

    Exemples: f g h ijlk,mnporq , s t u f v wWv x i#wokyqym . Le SCHMA DUNE RELATION z est dfini par un nom et une liste dattributs.

    Notation :

    z {Bu | i5} |(~(

  • Vertigo/CNAM, Paris 39

    Instances dun Schma

    INSTANCE DUN SCHMA DE RELATION : Une instance dun schma derlation B 5 R(

  • Vertigo/CNAM, Paris 40

    Exemple de Base de Donnes

    SCHMA :

    FOURNISSEURS(FNOM:CHAR(20), FADRESSE:CHAR(30))

    FOURNITURE(FNOM:CHAR(20), PNOM:CHAR(10), PRIX:ENTIER))

    COMMANDES(NUM_COMDE:ENTIER, NOM:CHAR(20),

    PNOM:CHAR(10), QUANTITE;ENTIER))

    CLIENTS(NOM: CHAR(20), CADRESSE:CHAR(30), BALANCE:RELATIF)

  • Vertigo/CNAM, Paris 41

    Exemple de Base de Donnes

    UNIVERS DATTRIBUTS :

    U={FNOM, PNOM, NOM, FADRESSE, CADRESSE,

    PRIX, NUM_CODE, QUANTITE, BALANCE}

    RELATION UNIVERSELLE :

    FPCC(FNOM, PNOM, NOM, FADRESSE, CADRESSE,

    PRIX, NUM_CODE, QUANTITE, BALANCE)

  • Vertigo/CNAM, Paris 42

    Revenons lexemple du dbut

    Loic

    Nadia

    Loic

    Julien

    Marie

    Espace

    Espace

    R5

    R25

    ZX

    1988

    1989

    1978

    1989

    1993

    VEHICULE Proprietaire Type Annee

    n-uplet

    Nom de la Relation Nom dAttribut

    Traduction: Schma conceptuel (ER) Schma logique (relationnel) Plus prcismment: Description du monde rel Schma conceptuel Schma

    logique

    Objectif: Description du monde rel Schma conceptuel Schma logique?

  • Vertigo/CNAM, Paris 43

    Contraintes dintegrit

    Objectif: Schma logique + contraintes Description du monde rel FOURNISSEUR(FNOM, FADRESSE)

    FOURNITURE(FNOM, PNOM, PRIX)

    COMMANDE(NUM_CMDE, NOM, PNOM, QUANTIT)

    Exemples de contraintes:

    1. Chaque fournisseur un nom diffrent.

    2. Chaque fournisseur une seule adresse.

    3. Chaque fournisseur fournit un produit un seul prix.

    4. Chaque commande est faite par un seul client.

  • Vertigo/CNAM, Paris 44

    Contraintes 1 et 2: FNOM est une cl dans FOURNISSEUR

    Contraintes 1 et 3: (FNOM, PNOM) est une cl dans FOURNITURE

    Contrainte 4: NUM_CMDE dtermine NOM dans COMMANDE :

    1. deux nuplets avec la mme valeur pour NUM_CMDE ont la mme valeur pour

    NOM.

    2. notation: NUM_CMDE NOM (dpendance fonctionnelle)Attention: NUM_CMDE nest pas une cl.

    Remarque: les dpendances fonctionnelles ne rprsentent quun type de contraintes qui

    peuvent exister dans un schma logique (dpendance dinclusion, dpendances

    multi-values, ...).

  • Vertigo/CNAM, Paris 45

    Oprations et Langages

  • Vertigo/CNAM, Paris 46

    Oprations sur une Base de Donnes Relationnelle

    LANGAGE DE DFINITION DES DONNES (dfinition et MAJ du schma) :

    Cration et destruction dun schma de relation (et de son instance).

    Modification du schma: ajout, suppression dun attribut

    Dfinition de contraintes.

  • Vertigo/CNAM, Paris 47

    LANGAGE DE MANIPULATION DES DONNES

    Saisie des nuplets dune relation

    Affichage dune relation

    Modification dune relation : insertion, suppression et maj des nuplets

    Requtes : consultation dune relation ou calcul dune nouvelle relation

    GESTION DES TRANSACTIONS

    GESTION DES VUES

  • Vertigo/CNAM, Paris 48

    Langages de Requtes Relationnels

    POUVOIR DEXPRESSION : Quest-ce quon peut calculer? Quelles oprations

    peut-on faire?

    Les langages de requte relationnels utilisent deux approches :

    calcul relationnel

    algbre relationnelle

    Les deux approches ont mme pouvoir dexpression.

  • Vertigo/CNAM, Paris 49

    LES DPENDANCES FONCTIONNELLES

  • Vertigo/CNAM, Paris 50

    COURS

    ETUDIANT

    PROF

    enseigne

    suit

    0,n

    0,n

    0,n

    1,1

    Nom-Cours

    Nom-Etudiant

    Nom-Prof

  • Vertigo/CNAM, Paris 51

    Exemples : Relation PERSONNE

    PERSONNE NOSS NOM VILLE

    123 toto Paris

    324 mimi Paris

    574 toto Marseilles

    Quest-ce quon peut dire sur la table PERSONNE?

    Connaissant le numro de scurit sociale NOSS, je connais le NOM

    Lattribut NOSS dtermine lattribut NOM

    Lattribut NOM dpend fonctionnellement de lattribut NOSS

    Attention : Connaissant le NOM on ne connat pas le NOSS : NOM NOSSNOTATION : NOSS NOM

  • Vertigo/CNAM, Paris 52

    Relation COURS

    COURS NOM-COURS PROF ETUDIANT

    BDPI MATHELOT 123

    BDPI MATHELOT 324

    BDPI MATHELOT 574

    IPA HARDIN 123

    Un Cours a un seul Professeur

    NOM-COURS PROF 2 nuplets qui ont mme valeur pour NOM-COURS ont mme valeur pour PROF

  • Vertigo/CNAM, Paris 53

    Cls, Supercls et Cls trangres

    Relation: PERSONNE (NOSS, NOM, PRENOM, ADRESSE)

    NOSS NOM, NOSS PRENOM, NOSS ADRESSE Le NOSS est une cl.

    NOSS NOM PRENOMNOSS NOM est une supercl (NOM est redondant)

    Relation: COURS (NOM-COURS, PROF, ETUDIANT)

    Si est une valeur de lattribut ETUDIANT dans la table Cours, alors est une cl dansla table personne.

    ETUDIANT est une cl trangre (dpendance dinclusion) entre la table COURS et

    la table PERSONNE.

  • Vertigo/CNAM, Paris 54

    Dfinitions

    a) Dpendance fonctionnelle

    Soit R(U) un schma de relation, r une relation de schma R, X U, Y U deuxsous-ensembles dattributs de R. La dpendance fonctionnelle

    X Yest vrai dans r, ssi (si et seulement si) tous les nuplets de r qui ont mme valeur

    pour (tous) les attributs de X, ont mme valeur pour (tous) les attributs de Y.

    Exemple :

    ADRESSE(RUE, NUMERO, VILLE, CODE-P)

    X = CODE-P

    Y = VILLE

  • Vertigo/CNAM, Paris 55

    b) Supercl

    Soit R(U) un schma et X U un sous ensemble dattributs.X est une supercl de r de schma R, si X U.Exemple :

    NOSS NOM NOSS NOM PRENOM ADRESSENOSS NOM est une supercl

    c) Cl

    X est une cl, si :

    1. X est une supercl : X U2. il nexiste pas Y X, tel que Y UExemple :

    RUE NUMERO VILLE RUE NUMERO VILLE CODE-PRUE NUMERO VILLE est une cl (pourquoi?)

  • Vertigo/CNAM, Paris 56

    Calcul dune Cl: Exemple

    COURS(Nomc, Heure, Salle, Prof) N HS, HS P

    Nous pouvons prouver partir de

    que si on connat le nom de cours, on connataussi le nom du professeur (Nomc est une cl) :

    1. N HS : deux nuplets qui partagent le nom de cours partagent galementlhoraire et la salle

    2. HS P : deux nuplets qui partagent lhoraire et la salle partagent galement lenom du professeur

    3. DF 1 et 2 impliquent, que deux nuplets qui partagent le nom de cours partagentgalement le nom du prof : N P

    On peut dfinir des proprits (rgles) sur les DF qui permettent de dduire dautresDF.

  • Vertigo/CNAM, Paris 57

    Proprits des Dpendances Fonctionnelles

    (Axiomes dArmstrong)

    1) Rflexivit

    si X Y alors Y X (pour tous les ensembles dattributs X et Y)Exemple :

    NOM VILLE NOMTrivial : Deux personnes qui ont le mme nom et habitent la mme ville, ont le

    mme nom.

  • Vertigo/CNAM, Paris 58

    2) Transitivit

    si X Y et Y Z, alors X ZExemple :

    R(NOSS, CODE-P, VILLE)NOSS CODE-P, CODE-P VILLE NOSS VILLE

    Si on connat le code postale partir du numro de scurit sociale et la ville

    partir du code postale, on connat la ville partir du numro de scurit sociale.

    3) Augmentation

    X Y XZ YZExemple :

    NOSS CODE-P NOSS VILLE CODE-P VILLE

  • Vertigo/CNAM, Paris 59

    4) Union et dcompositionX A, X B X AB

    5) PseudotransitivitX Y, WY Z WX Z

    REMARQUE : Union, dcomposition et pseudotransitivit peuvent tre dduites desautres axiomes

  • Vertigo/CNAM, Paris 60

    Clture dun ensemble de dpendances fonctionnelles

    De lensemble des dpendances fonctionnelles donnes par lanalyse du monde rel, en

    utilisant les proprits ci-dessus, appeles Axiomes dArmstrong, on peut en dduire

    dautres :

    Exemples :

    1) R(A,B,C,D)= A B, B C

    Par transitivit, on dduit A CNotation :

    A C

  • Vertigo/CNAM, Paris 61

    2) R(Cours, Prof, Heure, Salle, Eleve, Note)= C P, HS C, HP S, CE N, HE S

    HS P, HE C,P,NDonc HE est une cl. Pourquoi?

    Lunion de

    et de toutes les dpendances ainsi dduites est appele clture, oucouverture de

    et note

    .

  • Vertigo/CNAM, Paris 62

    Nouvelle dfinition dune Supercl

    Soit R(U) un schma de relation, un ensemble de dpendances fonctionnelles et X U un ensemble dattributs. X est une supercl de R si pour tout A U

    X Aou encore si:

    X A Calculer partir de peut tre trs long.Montrer que X A est plus facile.

  • Vertigo/CNAM, Paris 63

    Calcul de la cl dune relation

    Soit R(U) un schma de relation et X U un ensemble dattributs. On dfinit comme ensemble des attributs A tels que X A Si A appartient , alors par dfinition X A est lensemble des attributs fonctionnellement dpendants de X.

    Pour calculer une cl on utilise lalgorithme suivant :

    1. On cherche un X tel que = U X est une supercl2. X est une cl, sil nexiste pas Y X tel que = U

  • Vertigo/CNAM, Paris 64

    Calcul de

    tape 1: On part de XPour toute Y A, telle que Y X, Y A , on rajoute A X.On obtient .

    tape i: On part de B Pour toute Y A, telle que Y B , Y A , on rajoute A B .On obtient .

    On sarrte quand on ne trouve plus de nouvelle DF (point fixe) :

    = =

  • Vertigo/CNAM, Paris 65

    Exemples

    1. Montrer que HE est une cl pour R(CHENSP) avec lensemble de DF donnci-dessus

    2. Pour la relation ADRESSE(VILLE, RUE, NUMERO, CODE_P) ci-dessus,

    montrer que VILLE RUE NUMERO est une cl. Quelle est lautre?

  • Vertigo/CNAM, Paris 66

    Contraintes dintgrit

    La liste des attributs est insuffisante pour dcrire la smantique du monde rel.

    Il existe plusieurs types de contraintes sur les nuplets :

    1. dpendances (fonctionnelles, dinclusion, multivalues, etc.)

    2. contraintes qui dpendent du domaine dun attribut : Taille 2m10, anne 20003. etc.

    Ce sont les dpendances qui permettent la conception dun bon schma.

  • Vertigo/CNAM, Paris 67

    ANOMALIES DE MISE JOUR

  • Vertigo/CNAM, Paris 68

    Exemple

    Soit le schma S1 :

    FOURNISSEUR(FNOM, FADRESSE)

    FOURNITURE(FNOM, PNOM, PRIX)

    et lensemble de DF : FNOM FADRESSE, (FNOM PNOM) PRIX Supposons quon remplace S1 par le schma S2 :

    R(FNOM, FADRESSE, PNOM, PRIX)

  • Vertigo/CNAM, Paris 69

    Anomalies

    R (FNOM, FADRESSE, PNOM, PRIX) FNOM FADRESSE, (NOM PNOM) PRIX

    Quelle est la cl de R?

    TOTO LYON BRIQUES 1000

    DUPONT ROUEN BRIQUES 900

    TOTO LYON BETON 400

    1) REDONDANCE : ladresse dune personne apparat plusieurs fois.

    2) MAJ : si on modifie ladresse dans un nuplet, il faut le faire dans les autres.

  • Vertigo/CNAM, Paris 70

    3) SUPPRESSION : si DUPONT ne fournit plus de BRIQUES, on supprime le 2enuplet, on perd toute info sur DUPONT

    4) INSERTION : on ne peut insrer un nouveau fournisseur et son adresse, si on neconnat pas au moins un produit quil fournit

    TOTO PARIS BRIQUES 1000

    TOTO LYON BETON 400

    DURAND NICE

    LE SCHMA INITIAL S1 EST MEILLEUR

  • Vertigo/CNAM, Paris 71

    Qualits dun bon schma

    1. viter les anomalies dcomposition2. La dcomposition doit conserver la mme information

    La jointure dune relationf1 de schma FOURNISSEUR(FNOM, FADRESSE)

    et dune relationf2 de schma FOURNITURE(FNOM, PNOM, PRIX)

    obtenues par dcomposition dune relationr de schma R(FNOM, FADRESSE, PNOM, PRIX)

    doit redonner r.

    3. La dcomposition doit conserver les mmes contraintes (DF). La dcomposition deR en R1(FNOM, FADRESSE, PRIX) et R2(PNOM, PRIX) ne prserve pas lesDF. Pourquoi?

  • Vertigo/CNAM, Paris 72

    FORMES NORMALES ET DCOMPOSITION

  • Vertigo/CNAM, Paris 73

    Relation en premire forme normale (1FN)

    Tous les attributs sont atomiques (lmentaires)

    Relations telle quon les connat.

    Relation non normalise, non en 1e FN :

    Certains attributs sont des ensembles de valeurs, des relations elles mme

  • Vertigo/CNAM, Paris 74

    Relation 1FN

    NOTES ( COURS ETUDIANT NOTE )

    BDB Toto 15

    BDB Lulu 17

    BDB Lili 0

    ARCHI Lili 20

    ARCHI Toto 0

    Relation N1FN

    NOTES ( COURS PERF (ETUDIANT NOTE) )

    BDB Toto 15

    Lulu 17

    Lili 0

    ARCHI Lili 20

    Toto 0

  • Vertigo/CNAM, Paris 75

    Relation en 3e forme normale

    2e forme normale :

    Purement historique

    3e forme normale : 3FN

    vite la plupart des anomalies

    le but du jeu : dcomposer une relation (1FN) en un ensemble de relations 3FN

  • Vertigo/CNAM, Paris 76

    3FN : Dfinition

    Dfinition : Une relation R est en 3FN, si quelle que soit la DF X A de o A est un seul attribut et

    A nest pas lun des attributs de X,

    soit X est une supercl (contient une cl),

    soit A appartient lune des cls.

    En fait, il nest pas ncessaire de vrifier toutes les DF de .Il suffit de vrifier celles de !

  • Vertigo/CNAM, Paris 77

    Exemples: 3e Forme Normale

    1) Poste(Ville, Rue, Code)= VR C, C V

    Cls : {V,R} et {R,C}

    R est en 3FN.

    2) FOURNITURE(NOMF, ADR, NOMP, PRIX)= NOMF ADR, NOMF, NOMP PRIX

    Cl : {NOMF, NOMP}

    FOURNITURE nest pas en 3FN.

  • Vertigo/CNAM, Paris 78

    3) PLANNING(Cours, Heure, Salle)= SH C, C S

    Cls : {S,H} et {C,H}

    PLANNING est en 3FN.

    4) R(A, B, C, D)= AB C, B D, BC A

    Cls : {A, B}, {B, C}

    R nest pas en 3FN.

  • Vertigo/CNAM, Paris 79

    Dcomposition sans perte dinformation (SPI)

    Exemple

    R ( A B C )

    a b c

    a b a

    c b d

    et = A B Dcomposons en :

    R1 ( A B ) R2 ( B C )

    a b b c

    c b b a

    b d

  • Vertigo/CNAM, Paris 80

    R1 = r+ (R)R2 = (R)R = R1 R2 R :

    R ( A B C )

    a b c

    a b a

    a b d

    c b c

    c b a

    c b d

    La dcomposition de R en R1 et R2 est avec perte dinformations.

    La jointure cre des nuplets qui nexistaient pas dans R.

  • Vertigo/CNAM, Paris 81

    Dcomposons R maintenant en :

    R1( A B ) R2 ( A C )

    a b a c

    c b a a

    c d

    R = R1R2 = R :

    R ( A B C )

    a b c

    a b a

    c b d

    Cette dcomposition est sans perte dinformation (SPI)

    Il faut quaprs la jointure, on retrouve la mme information quavant la dcomposition.

  • Vertigo/CNAM, Paris 82

    Dfinition

    Une dcomposition de R en R1, R2, ..., Rk par rapport un ensemble de DF est SPI (sans perte dinformation), ssi quelle que soit r de schma R satisfaisant , on a :

    r = (r) (r). . . (r)Thorme :

    Si (R1, R2) est une dcomposition de R et un ensemble de DF, alors (R1, R2)est SPI par rapport , ssi :

    R1 R2 R1 - R2ou

    R1 R2 R2 - R1est une dpendance de .

  • Vertigo/CNAM, Paris 83

    Exemples

    R (A, B, C)= A B

    1) R1(A, B), R2(B, C)

    AB BC = BAB - BC = A

    BC - AB = C

    Il ny a ni la DF B A, ni la DF B C dans Dcomposition avec perte dinformation

  • Vertigo/CNAM, Paris 84

    2) R1(A, B), R3(A, C)

    AB AC = AAB - AC = B

    A B est dans ( ). Dcomposition sans perte dinformation

  • Vertigo/CNAM, Paris 85

    Dcomposition qui prserve les dpendances fonctionnelles

    Dfinitions

    1. Projection dun ensemble de dpendances sur Z U ( ) = "! # $ % & '(! $ ) * +Exemple : R(A,B,C,D), = AB # C, C # A, A # D +-,.0/ ( ) = AB # C, C # A +

    2. Dcomposition qui prserve les DF de Soit 1 = (R1,...,Rk) une dcomposition, et un ensemble de DF.1 prserve les DF de , si on peut retrouver toutes les DF de & partir delunion 2 de toutes les DF projetes de dans 435 ( ), . . . , 36 ( ) :27& = &

  • Vertigo/CNAM, Paris 86

    Exemples

    R(A,B,C,D)8= 9 AB : C, C : A, A : D ;@?ACB):D5E DFGAC9< ?H%I?KJ [email protected]%'!TU3 4! 0V>WYXTZ1 9;:=< >@?[ DFZL]\_^/\M:=9`E4?a%'!$%'XTb3

  • Vertigo/CNAM, Paris 155

    Formes Abrgs

    Formes abrges de quantificateurs:

    1. cdfeg'd)h*g-i,i-ijgkd/l est une abrviation de cd$e5cd)hmi-i-iUcYdRl ,2. ndfeg'd)h*g-i,i-ijgkd/l est une abrviation de nd$e_nd)hmi-i-ionQdRl .

    Ordre de prcdence (priorit) entre les connecteurs et quantificateurs (du plus au

    moins prioritaire):

    1. pqgrnsgtc ,2. u ,3. v .Par exemple, w x y{z | wjx }~ y w,~ y w y est compris comme

    wVw x yOwz | wjx }~ yyVy w w,~ y w4 yy

  • Vertigo/CNAM, Paris 156

    Smantique

  • Vertigo/CNAM, Paris 157

    Interprtation: Exemple

    Les formules et requtes sont interprtes :

    Formule: ; @ &_/M"HIG*H ]C8b Interpretation naturelle: Est-ce que M. Brando a jou dans un film Metropolis

    dirig par un certain F. Lang?

    Interpretation base de donnes: Est-ce quil existe un nuplet (Metropolis, F.

    Lang, M. Brando) dans la table ;= ?

  • Vertigo/CNAM, Paris 158

    Formule: S ; @ &_/M"HIGQY'b Interpretation naturelle: Est-ce quil existe un acteur qui a jou dans un film

    Metropolis dirig par un certain F. Lang? ou Est-ce que F. Lang dirig le film

    Metropolis (avec au moins un acteur)?

    Interpretation base de donnes: Est-ce quil existe une constante tel que(Metropolis, F. Lang, c) est un nuplet dans la table ;= ?

  • Vertigo/CNAM, Paris 159

    Requte: 4 *Z ;= @ Z]_/M=`4a'$'b Interpretation naturelle: je cherche le nom de tous les acteurs dans le(s)

    film(s) avec le titre Metropolis (je ne mintresse pas pariculirement au(x)

    metteur(s) en scne).

    Interpretation base de donnes: je cherche toutes les constantes tel quilexiste pour chacune au moins une constante tel que (Metropolis, d, c) est unn-uplet dans la table Film.

  • Vertigo/CNAM, Paris 160

    Interprtation: atomes avec constantes

    Les formules sont interprtes par rapport une base de donnes . Le rsultat (larponse) de linterprtation dune formule est vrai ou faux :

    Latome p(x1,. . . ,xn) o p est un symbole de prdicat (nom de relation) et o les xi i [1,n] sont des constantes, est vrai dans ( satisfait p(x1,. . . ,xn)) si (x1,. . . ,xn) estun -uplet de la relation p dans .Exemple : ;= @Q5 a @I 8OR 5&4 est vrai ssi)5 Ga I 8ORI 54Q est un n-uplet dans la table ;= .

    Linterprtation de x y est naturelle (indpendante de de la base de donnes).Exemple: est vrai ssi 3 est infrieur 5.

  • Vertigo/CNAM, Paris 161

    Interprtation: variables libres et substitution

    Substitution: Si est une variable libre dans une formule on note rU laformule quon obtient par un remplacement de par .

    Exemple:

    Formule : = Film(Metropolis, x, y) Substitution de variables libres :

    1. ) = Film(Metropolis, F. Lang, y)2. ) RM = Film(Metropolis, A. Hitchcock, y)3. ) Z = Film(Metropolis, F. Lang, B. Helm)4. Zr = Film(Metropolis, F. Lang, B. Helm)

  • Vertigo/CNAM, Paris 162

    Interprtation: quantificateurs

    La formule ( x)F est vraie dans ! sil existe une substition "$#&%('*) de # telle que+ "#&%('*) est vraie dans ! .Par exemple ,- .#&/ + 02143 5 ,6#87:[email protected]@DC>FEG967:9H IJ=LKC>9/ est vraie parce que+ 02143 5 ,6#87:[email protected]@DCM>NEG9O7:9PH IQ=LKC>9P/R"$#&%S9OTU> 1 K 5 KVE*T 0-3 9W)&X+ 02143 5 ,Y9OTU> 1 K 5 KVE*T 0Z3 9Y7:9W; =?>[email protected]@DC>FEG967:9H IJ=LKC>9/ est vraie.

    Linterprtation de F1 [ F2. \ F,. . . est linterprtation habituelle : F1 [ F2 est vraie siF1 est vraie ou F2 est vraie.

    Note: La disjonction et la quantification universelle peuvent tre exprimes en utilisant lanegation:

    1. F1 [ F2 ] \^,_\ F1 `a\ F2),2. (b x) F ] ( \a x) \ F.

  • Vertigo/CNAM, Paris 163

    Interprtation dune Requte

    Requte : cedgfihjdlkmhRnononohjdqp rts u o F est une formule avec les variables libresdgfihvdkwhononRnhvdFp .Le rsultat de linterprtation dune requte est ensemble des p -uplets (une relation!)xzy fih y kmhRnonRnVh y pl{ tels que s | x d8fJ| y fihvdk}| y kmhRnononohjdqp~| y p{ est vraie.

    cd r?s 24 OUl6J VU- h: SA& y Fhjd&*u retourne tous les acteurs du film Juleset Jim de Truffaut : c x n QL y {-h x n oSpot{u .

    cd rw-s 24 ODh ?AB y N hvdlu retourne tous les acteurs qui ont tourn avecTruffaut.

  • Vertigo/CNAM, Paris 164

    Algbre relationnelle vs Calcul relationnel sain

    Lalgbre relationnelle et le calcul relationnel sain ont le mme pouvoir dexpression.

    Thorme 1 : Toute requte exprimable dans lalgbre relationnelle est exprimable dansle calcul relationnel.

    Formule saine : Formule dont le rsultat est fini (le nb de -uplets qui satisfont laformule est fini).

    Exemple de formule non saine : evg6l . Le resultat contient tous les nuplets qui nesont pas dans la relation .Deux solutions : interdire les formules non-saine ou interprtation par rapport audomaine actif de la base de donnes (exemple : toutes les constantes dans qui ne sontpas dans ).Thorme 2 : Toute requte du calcul relationnel sain est exprimable en algbrerelationnelle.

  • Vertigo/CNAM, Paris 165

    Calcul relationnel domaine/ -uplet

    Le calcul relationnel prcdent est appel calcul relationnel domaine.

    Pour obtenir le calcul relationnel -uplet, on remplace : x1,x2,. . . ,xn (o xi est une variable domaine) par la variable -uplet t. Lattribut A de rang i (xi dans le calcul domaine) est not t.A (voir exemples

    ci-dessous).

    Theorme 3 : Le calcul relationnel -uplet sain a le mme pouvoir dexpression quelalgbre relationnelle.

  • Vertigo/CNAM, Paris 166

    Exemples de Requtes

  • Vertigo/CNAM, Paris 167

    Quelques Requtes

    1. Qui dirige Metropolis?

    2. Adresse et numro de tlphone du Studio?

    3. Salles o on peut voir un film de Truffaut?

    4. Adresses des cinmas montrant un film de Truffaut?

    5. Quels films de Truffaut ne passent pas en ce moment?

  • Vertigo/CNAM, Paris 168

    Requte 1: Qui a dirig le film Metropolis?

    SQL

    select Metteur-en-Scene

    from Films

    where Titre = Metropolis;

    Calcul relationnel -uplet 8wg

    _g

    _ 8 L o ? 8M M

    Calcul relationnel domaine

    ( L ~M q

  • Vertigo/CNAM, Paris 169

  • Vertigo/CNAM, Paris 170

    Requte 2: Adresse et numro de tlphone du Studio?

    Calcul relationnel -uplet

    8_

    8 o S g i

    Calcul relationnel domaine

    j 8 M 6 j q

  • Vertigo/CNAM, Paris 171

    Requte 3: Salles o on peut voir un film de Truffaut?

    Calcul relationnel -uplet } F

    AG B

    ! "#R%$&

    _

    _ ' }. () !$+*,* $-#(.0/

    Calcul relationnel domaine

    1 &2-3!4W5674V8D9}: N8

    70U;[email protected];A BBV D$+*E*$-(F4W5GAA0/

  • Vertigo/CNAM, Paris 172

    Requte 4: Adresses des cinmas montrant un Truffaut?

    SQL

    select L.Adresse

    from Films F, Lieu L, Pariscope P

    where F.Metteur-en-Scene = Truffaut

    and P.Titre = F.Titre

    and L.Cinema = P.Cinema;

    Calcul relationnel H -upletIDJLKNM O=PRQ!S3SQ T UVW XZY[U\ ]^F_ S=UW[` a bcP!]8Sd7e0fgQcUhY[i` j ]Q%k UJc[A`

    W K Q"l#lmQ%k&P_Qon

    _ p dQ%nqQ r sut P!k+v,vbk-l#sw`W Kt ]l8PRQ r YgKt ]lPxQ ` YgKzy ]:nqQ%_ b r JLKzy ]:nqQ%_ b{[0|

  • Vertigo/CNAM, Paris 173

    Requte 4: Adresses des cinmas montrant un Truffaut?

    Calcul relationnel domaine

    }D~ )7;@q~56 F =7:8 !+,~-~5GAA

    ~D87+c:q=3i % :[email protected]

  • Vertigo/CNAM, Paris 174

    Requte 5: Quels films de Truffaut ne passent pas?

    SQL

    select Titre

    from Films F

    where F.Metteur en Scene = Truffaut

    and not exists ( select *

    from Pariscope P

    where P.Titre = F.Titre )

    Calcul relationnel -uplet3 8R F =h mo&

    _%

    _ %q 5 !+,-#.A : c!8 70 ch g 8R

  • Vertigo/CNAM, Paris 175

    Requte 5: Quels films de Truffaut ne passent pas?

    Calcul relationnel domaine

    3 F =h : !+,-Zi LZ D+LZ Z 0

    ou3 F =h : !+,-

    Zi LZ A D87+cLZ Z

  • Vertigo/CNAM, Paris 176

    SQL

  • Vertigo/CNAM, Paris 177

    Principe

    SQL (Structured Query Language) est le Langage de Requtes standard pour les

    SGBD relationnels

    Expression dune requte par un bloc SELECT FROM WHERE

    SELECT liste des attributs a projeter FROM liste des relations arguments WHERE conditions sur un ou plusieurs attributs

    Dans les requtes simples, la correspondance avec lalgbre relationnelle est facile

    mettre en vidence.

  • Vertigo/CNAM, Paris 178

    Historique

    SQL86 - SQL89 ou SQL1 La rfrence de base:

    Requtes compiles puis excutes depuis un programme dapplication.

    Types de donnes simples (entiers, rels, chanes de caractres de taille fixe)

    Oprations ensemblistes restreintes (UNION).

    SQL91 ou SQL2 Standard actuel:

    Requtes dynamiques: excution diffre ou immdiate

    Types de donnes plus riches (intervalles, dates, chanes de caractres de taillevariable)

    Diffrents types de jointures: jointure naturelle, jointure externe

    Oprations ensemblistes: diffrence (EXCEPT), intersection (INTERSECT)

    Renommage des attributs dans la clause SELECT

  • Vertigo/CNAM, Paris 179

    SQL3 (en cours) : SQL devient un langage de programmation :

    Extensions orientes-objet

    Oprateur de fermeture transitive (recursion)

    ...

  • Vertigo/CNAM, Paris 180

    Expressions de Base

  • Vertigo/CNAM, Paris 181

    Projection

    Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)

    REQUTE: Information sur toutes les commandes

    SQL:

    SELECT NUM,CNOM,PNOM,QUANTITE

    FROM COMMANDES

    ou

    SELECT *

    FROM COMMANDES

  • Vertigo/CNAM, Paris 182

    Projection : Distinct

    Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)

    REQUTE: Produits commands

    SELECT PNOM

    FROM COMMANDES

    NOTE: Contrairement lalgbre relationnelle, SQL nlimine pas les dupliqus. Pourles liminer on utilise DISTINCT :

    SELECT DISTINCT PNOM

    FROM COMMANDES

    Le DISTINCT peut tre remplac par la clause UNIQUE dans certains systmes

  • Vertigo/CNAM, Paris 183

    Slection

    Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)

    REQUTE: Produits commands par Jean

    ALGBRE: ;5, wR5, =65c SQL:

    SELECT PNOM

    FROM COMMANDES

    WHERE CNOM = JEAN

  • Vertigo/CNAM, Paris 184

    REQUTE: Produits commands par Jean en quantit suprieure 100

    SQL:

    SELECT PNOM

    FROM COMMANDES

    WHERE CNOM = JEAN

    AND QUANTITE > 100

  • Vertigo/CNAM, Paris 185

    Conditions de slection en SQL : Conditions simples

    Les conditions de base sont exprimes de deux faons:

    1. attribut comparateur valeur

    2. attribut comparateur attribut

    o est Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Produits de prix suprieur 200F

  • Vertigo/CNAM, Paris 186

    SQL:

    SELECT PNOM

    FROM FOURNITURE

    WHERE PRIX > 2000

  • Vertigo/CNAM, Paris 187

    Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Produits dont le nom est celui du fournisseur

    SQL:

    SELECT PNOM

    FROM FOURNITURE

    WHERE PNOM = FNOM

  • Vertigo/CNAM, Paris 188

    Conditions de slection en SQL : Suite

    Le ! "#$#%&'$ est BETWEEN, LIKE, IS NULL, INSoit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Produits avec un cot entre 1000F et 2000F

    SQL:

    SELECT PNOM

    FROM FOURNITURE

    WHERE PRIX BETWEEN 1000 AND 2000

    NOTE: La condition ( BETWEEN ) AND * est quivalente ( + , * AND) + , ( .

  • Vertigo/CNAM, Paris 189

    Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)

    REQUTE: Clients dont le nom commence par "C"

    SQL:

    SELECT CNOM

    FROM COMMANDES

    WHERE CNOM LIKE C%

    NOTE: Le littral qui suit LIKE doit tre une chane de caractres ventuellement avecdes caractres jokers (_, %). Pas exprimable avec lalgbre relationnelle.

  • Vertigo/CNAM, Paris 190

    La valeur NULL (*)

    La valeur NULL est une valeur spciale qui reprsente une valeur (information)

    inconnue.

    1. - . / est inconnu (ni vrai, ni faux) si la valeur de - ou/et / est NULL ( . est lunde 0 12 143 15 146 1870 ).

    2. - 9;: / est NULL si la valeur de - ou/et / est NULL ( 9 [email protected]? 1BA ).

  • Vertigo/CNAM, Paris 191

    Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)

    REQUTE: Les Fournisseurs de Paris.

    SQL:

    SELECT FNOM

    FROM FOURNISSEUR

    WHERE VILLE = Paris

    On ne trouve pas les fournisseurs avec VILLE = NULL !

  • Vertigo/CNAM, Paris 192

    Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)

    REQUTE: Fournisseurs dont ladresse est inconnu.

    SQL:

    SELECT FNOM

    FROM FOURNISSEUR

    WHERE VILLE IS NULL

    NOTE: Le prdicat IS NULL (ou IS NOT NULL) nest pas exprimable en algbrerelationnelle.

  • Vertigo/CNAM, Paris 193

    Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Produits avec un cot de 100F, de 200F ou de 300F

    SQL:

    SELECT PNOM

    FROM FOURNITURE

    WHERE PRIX IN {100,200,300}

    NOTE: La condition C IN DEFHGIFJJJFLKNM est quivalente C O E OR C O G OR JJJ ORC O K .

  • Vertigo/CNAM, Paris 194

    Jointure

    Soit le schma de relations

    COMMANDES(NUM,CNOM,PNOM,QUANTITE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Nom, Cot, Fournisseur des Produits commands par Jean

    ALGBRE :

    PRQTSVUXW YZQ\[8]_^VYa`bScUXW dfegTSVUXW hjikmlTn8Soidqp r s s t u v w xy{z d}| r ~ u ~ w yy

  • Vertigo/CNAM, Paris 195

    SQL :

    SELECT COMMANDES.PNOM, PRIX, FNOM

    FROM COMMANDES, FOURNITURE

    WHERE CNOM = JEAN AND

    COMMANDES.PNOM = FOURNITURE.PNOM

    NOTE: Cette requte est quivalente une jointure naturelle. Noter quil faut toujoursexpliciter les attributs de jointure.

    NOTE: SELECT COMMANDES.PNOM, PRIX, FNOM FROM COMMANDES,FOURNITURE quivaut un produit cartsien des deux relations, suivi dune projection.

  • Vertigo/CNAM, Paris 196

    Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)

    REQUTE: Fournisseurs qui habitent deux deux dans la mme ville

    SQL:

    SELECT PREM.FNOM, SECOND.FNOM

    FROM FOURNISSEUR PREM, FOURNISSEUR SECOND

    WHERE PREM.VILLE = SECOND.VILLE AND

    PREM.FNOM < SECOND.FNOM

    La deuxime condition permet

    1. llimination des paires (x,x)

    2. dviter dobtenir au rsultat la fois (x,y) et (y,x)

    NOTE: PREM reprsente une instance de FOURNISSEUR, SECOND une autreinstance de FOURNISSEUR.

  • Vertigo/CNAM, Paris 197

    Soit le schma de relation EMPLOYE(EMPNO,ENOM,DEPNO,SAL)

    REQUTE: Nom et Salaire des Employs gagnant plus que lemploy de numro 12546

    ALGBRE:

    R1 := jN8X} TVf R2 := VX Z \4TN8 f TTZN8X_N8 f I

    SQL:

    SELECT E1.ENOM, E1.SAL

    FROM EMPLOYE E1, EMPLOYE E2

    WHERE E2.EMPNO = 12546 AND

    E1.SAL > E2.SAL

  • Vertigo/CNAM, Paris 198

    Trois Valeurs de Vrit (*)

    Trois valeurs de vrit: vrai, faux et inconnu

    1. vrai AND inconnu = inconnu

    2. faux AND inconnu = faux

    3. inconnu AND inconnu = inconnu

    4. vrai OR inconnu = vrai

    5. faux OR inconnu = inconnu

    6. inconnu OR inconnu = inconnu

    7. NOT inconnu = inconnu

  • Vertigo/CNAM, Paris 199

    Exemple (*)

    Soit le schma de relation EMPLOYE(EMPNO,ENOM,DEPNO,SAL)

    SQL:

    SELECT E1.ENOM

    FROM EMPLOYE E1, EMPLOYE E2

    WHERE E1.SAL > 20000 OR

    E1.SAL

  • Vertigo/CNAM, Paris 200

    Jointures dans SQL2 (*)

  • Vertigo/CNAM, Paris 201

    Oprations de Jointure (*)

    SQL2 opration Algbre

    R1 CROSS JOIN R2 produit cartesien R1 JOIN R2 ON R1.A

  • Vertigo/CNAM, Paris 202

    Jointure Naturelle: Exemple (*)

    SCHEMA: EMPLOYE(EMPNO,ENOM,DEPNO,SAL), DEPT(DEPNO,DNOM)

    REQUTE: Noms des dpartements avec les noms de leurs employs.

    SQL:

    SELECT DNOM, ENOM

    FROM DEPT NATURAL JOIN EMP

    Note : Comme dans la dfinition algbrique, lexpressionDEPT NATURAL JOIN EMP fait la jointure naturelle (sur lattribut DEPNO) et

    lattribut DEPNO napparat quune seule fois dans le schma du rsultat.

  • Vertigo/CNAM, Paris 203

    Theta-Jointure: Exemple (*)

    Soit le schma de relation EMPLOYE(EMPNO,ENOM,DEPNO,SAL)

    REQUTE: Nom et salaire des employs gagnant plus que lemploy 12546

    SQL:

    SELECT E1.ENOM, E1.SAL

    FROM EMPLOYE E1 JOIN EMPLOYE E2 ON E1.SAL > E2.SAL

    WHERE E2.EMPNO = 12546

  • Vertigo/CNAM, Paris 204

    Jointure Externe (*)

    EMP EMPNO DEPNO SAL

    Tom 1 10000

    Jim 2 20000

    Karin 3 15000

    DEPT DEPNO DNOM

    1 Comm.

    2 Adm.

    4 Tech.

    Jointure : les n-uplets qui ne peuvent pas tre joints sont limins :

    EMP NATURAL JOIN DEPT

    Tom 1 10000 Comm.

    Jim 2 20000 Adm.

  • Vertigo/CNAM, Paris 205

    Jointure Externe (*)

    Jointure externe : les n-uplets qui ne peuvent pas tre joints ne sont pas limins.

    On garde tous les n-uplets des deux rlations :

    EMP NATURAL FULL OUTER JOIN DEPT

    Tom 1 10000 Comm.

    Jim 2 20000 Adm.

    Karin 3 15000 NULL

    NULL 4 NULL Tech.

  • Vertigo/CNAM, Paris 206

    On garde tous les n-uplets de la premire rlation (gauche) :

    EMP NATURAL LEFT OUTER JOIN DEPT

    Tom 1 10000 Comm.

    Jim 2 20000 Adm.

    Karin 3 15000 NULL

    On garde tous les n-uplets de la deuxime rlation (droite) :

    EMP NATURAL RIGHT OUTER JOIN DEPT

    Tom 1 10000 Comm.

    Jim 2 20000 Adm.

    NULL 4 NULL Tech.

  • Vertigo/CNAM, Paris 207

    Jointures Externes dans SQL2 (*)

    R1 NATURAL FULL OUTER JOIN R2 : Remplir R1.* et R2.*

    R1 NATURAL LEFT OUTER JOIN R2 : Remplir R2.*

    R1 NATURAL RIGHT OUTER JOIN R2 : Remplir R1.*

    avec NULL quand ncessaire.

    Dune manire similaire on peut dfinir des thta-jointures externes :

    R1 (FULL|LEFT|RIGHT) OUTER JOIN R2 ON prdicat

  • Vertigo/CNAM, Paris 208

    Expressions Ensemblistes

  • Vertigo/CNAM, Paris 209

    Union

    COMMANDES(NUM,CNOM,PNOM,QUANTITE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Produits qui cotent plus que 1000F ou ceux qui sont commands par Jean

    ALGBRE:

    N X 4

    8 4

  • Vertigo/CNAM, Paris 210

    SQL:

    SELECT PNOM

    FROM FOURNITURE

    WHERE PRIX >= 1000

    UNION

    SELECT PNOM

    FROM COMMANDES

    WHERE CNOM = Jean

    NOTE: Lunion limine les dupliqus. Pour garder les dupliqus on utilise loprationUNION ALL : le rsultat contient chaque n-uplet fois, o et est le nombredoccurrences du n-uplet dans la premire et la deuxime requte.

  • Vertigo/CNAM, Paris 211

    Diffrence

    La diffrence ne fait pas partie du standard.

    EMPLOYE(EMPNO,ENOM,DEPTNO,SAL)DEPARTEMENT(DEPTNO,DNOM,LOC)

    REQUTE: Dpartements sans employs

    ALGBRE: {8c} T {8Vf SQL:

    SELECT DEPTNO

    FROM DEPARTEMENT

    EXCEPT

    SELECT DEPTNO

    FROM EMPLOYE

    NOTE: La diffrence limine les dupliqus. Pour garder les dupliqus on utilise

  • Vertigo/CNAM, Paris 212

    lopration EXCEPT ALL : le rsultat contient chaque n-uplet fois, o et est lenombre doccurrences du n-uplet dans la premire et la deuxime requte.

  • Vertigo/CNAM, Paris 213

    Intersection

    Lintersection ne fait pas partie du standard.

    EMPLOYE(EMPNO,ENOM,DEPTNO,SAL)DEPARTEMENT(DEPTNO,DNOM,LOC)

    REQUTE: Dpartements ayant des employs qui gagnent plus que 20000F et qui se

    trouvent Paris

    ALGBRE :

    !

  • Vertigo/CNAM, Paris 214

    SQL:

    SELECT DEPTNO

    FROM DEPARTEMENT

    WHERE LOC = Paris

    INTERSECT

    SELECT DEPTNO

    FROM EMPLOYE

    WHERE SAL > 20000

    NOTE: Lintersection limine les dupliqus. Pour garder les dupliqus on utiliselopration INTERSECT ALL : le rsultat contient chaque n-uplet " #%$'&)(+*-,/. fois, o ( et, est le nombre doccurrences du n-uplet dans la premire et la deuxime requte.

  • Vertigo/CNAM, Paris 215

    Imbrication des Requtes en SQL

  • Vertigo/CNAM, Paris 216

    Requtes imbriques simples

    La Jointure sexprime par deux blocs SFW imbriqus

    Soit le schma de relations

    COMMANDES(NUM,CNOM,PNOM,QUANTITE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Nom, prix et fournisseurs des Produits commands par Jean

    ALGBRE:

    021436587 9:1=@?69BAC3D587 EGFIH436587 JLKNMPO4Q>3RKSEUT V W W X Y Z [ \^]`_ Eba V c d Y eSf c d [ ]g]

  • Vertigo/CNAM, Paris 217

    SQL:

    SELECT PNOM,PRIX,FNOM

    FROM FOURNITURE

    WHERE PNOM IN (SELECT PNOM

    FROM COMMANDES

    WHERE CNOM = JEAN)

    ou

    SELECT FOURNITURE.PNOM,PRIX,FNOM

    FROM FOURNITURE,COMMANDES

    WHERE FOURNITURE.PNOM = COMMANDES.PNOM

    AND CNOM = JEAN

  • Vertigo/CNAM, Paris 218

    La Diffrence sexprime aussi par deux blocs SFW imbriqus

    Soit le schma de relations

    EMPLOYE(EMPNO,ENOM,DEPNO,SAL)DEPARTEMENT(DEPTNO,DNOM,LOC)

    REQUTE: Dpartements sans employs

    ALGBRE :

    hji`kml>njo6p qbr s t u v w s x s y w z4{ h2i|k4lCnjo6pqbs x t }R~ s z

  • Vertigo/CNAM, Paris 219

    SQL:

    SELECT DEPTNO

    FROM DEPARTEMENT

    WHERE DETPNO NOT IN (SELECT DISTINCT DEPTNO

    FROM EMPLOYE)

    ou

    SELECT DEPTNO

    FROM DEPARTEMENT

    EXCEPT

    SELECT DISTINCT DEPTNO

    FROM EMPLOYE

  • Vertigo/CNAM, Paris 220

    Requtes imbriques plus complexes : ANY - ALL

    Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Fournisseurs des Briques un cot infrieur au cot maximum des Ardoises

    SQL : SELECT FNOM

    FROM FOURNITURE

    WHERE PNOM = Brique

    AND PRIX < ANY (SELECT PRIX

    FROM FOURNITURE

    WHERE PNOM = Ardoise)

    NOTE: La condition ANY (SELECT F FROM . . . ) est vraie ssi la comparaison est vraie au moins pour une valeur du rsultat du bloc (SELECT F FROM . . . ).

  • Vertigo/CNAM, Paris 221

    Soit le schma de relations

    COMMANDE(NUM,CNOM,PNOM,QUANTITE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Nom, Cot et Fournisseur des Produits commands par Jean

    SQL:

    SELECT PNOM, PRIX, FNOM

    FROM FOURNITURE

    WHERE PNOM = ANY (SELECT PNOM

    FROM COMMANDE

    WHERE CNOM = JEAN)

    NOTE: Les prdicats IN et = ANY sont utiliss de faon quivalente.

  • Vertigo/CNAM, Paris 222

    Soit le schma de relation COMMANDE(NUM,CNOM,PNOM,QUANTITE)

    REQUTE: Client ayant command la plus petite quantit de Briques

    SQL:

    SELECT CNOM

    FROM COMMANDE

    WHERE PNOM = Brique AND

    QUANTITE

  • Vertigo/CNAM, Paris 223

    Soit le schma de relations

    EMPLOYE(EMPNO,ENOM,DEPNO,SAL)DEPARTEMENT(DEPTNO,DNOM,LOC)

    REQUTE: Dpartements sans employs

    SQL:

    SELECT DEPTNO

    FROM DEPARTEMENT

    WHERE DETPNO NOT = ALL (SELECT DISTINCT DEPTNO

    FROM EMPLOYE)

    NOTE: Les prdicats NOT IN et NOT = ALL sont utiliss de faon quivalente.

  • Vertigo/CNAM, Paris 224

    Requtes imbriques plus complexes : EXISTS

    Soit le schma de relations

    FOURNISSEUR(FNOM,STATUS,VILLE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Fournisseurs qui fournissent au moins un produit

    SQL : SELECT FNOM

    FROM FOURNISSEUR

    WHERE EXISTS (SELECT *

    FROM FOURNITURE

    WHERE FNOM = FOURNISSEUR.FNOM)

    NOTE: La condition EXISTS (SELECT * FROM . . . ) est vraie ssi le rsultat du bloc(SELECT F FROM . . . ) nest pas vide.

  • Vertigo/CNAM, Paris 225

    Soit le schma de relations

    FOURNISSEUR(FNOM,STATUS,VILLE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Fournisseurs qui ne fournissent aucun produit

    SQL:

    SELECT FNOM

    FROM FOURNISSEUR

    WHERE NOT EXISTS (SELECT *

    FROM FOURNITURE

    WHERE FNOM = FOURNISSEUR.FNOM)

    NOTE: La condition NOT EXISTS (SELECT * FROM . . . ) est vraie ssi le rsultat dubloc (SELECT F FROM . . . ) est vide.

  • Vertigo/CNAM, Paris 226

    Formes quivalentes de Quantification

    Si est un des oprateurs de comparaison N La condition x ANY (SELECT Ri.y FROM R1, N Rn WHERE p) est quivalente

    EXISTS (SELECT * FROM R1, N Rn WHERE p AND x Ri.y) La condition x ALL (SELECT Ri.y FROM R1, N Rn WHERE p) est quivalente

    NOT EXISTS (SELECT * FROM R1, N Rn WHERE (p) AND NOT (x Ri.y))

  • Vertigo/CNAM, Paris 227

    Soit le schma de relations

    COMMANDE(NUM,CNOM,PNOM,QUANTITE)FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Nom, prix et fournisseur des produits commands par Jean

    SELECT PNOM, PRIX, FNOM FROM FOURNITURE

    WHERE EXISTS (SELECT * FROM COMMANDE

    WHERE CNOM = JEAN

    AND PNOM = FOURNITURE.PNOM)

    SELECT PNOM, PRIX, FNOM FROM FOURNITURE

    WHERE PNOM = ANY (SELECT PNOM FROM COMMANDE

    WHERE CNOM = JEAN)

  • Vertigo/CNAM, Paris 228

    Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)

    REQUTE: Fournisseurs qui fournissent au moins un produit avec un cot suprieur au

    cot des produits fournis par Jean

    SQL:

    SELECT DISTINCT P1.FNOM

    FROM FOURNITURE P1

    WHERE NOT EXISTS (SELECT * FROM FOURNITURE P2

    WHERE P2.FNOM = JEAN

    AND P1.PRIX ALL (SELECT PRIX FROM FOURNITURE

    WHERE FNOM = JEAN)

  • Vertigo/CNAM, Paris 229

    Division

    Soit le schma de relations

    FOURNITURE(FNUM,PNUM,QUANTITE)PRODUIT(PNUM,PNOM,PRIX)FOURNISSEUR(FNUM,FNOM,STATUS,VILLE)

    REQUTE: Fournisseurs qui fournissent tous les produits

  • Vertigo/CNAM, Paris 230

    ALGBRE:

    R1 := 2C B

  • Vertigo/CNAM, Paris 231

    Fonctions de Calcul

  • Vertigo/CNAM, Paris 232

    COUNT, SUM, AVG, MIN, MAX

    REQUTE: Nombre de Fournisseurs de Paris

    SELECT COUNT(*) FROM FOURNISSEUR

    WHERE VILLE = Paris

    REQUTE: Nombre de Fournisseurs qui fournissent actuellement des produits

    SELECT COUNT(DISTINCT FNOM) FROM FOURNITURE

    NOTE: La fonction COUNT(*) compte le nombre des -uplets du rsultat dune requtesans limination des dupliqus ni vrification des valeurs nulles. Dans le cas contraire on

    utilise la clause COUNT(UNIQUE . . . ).

  • Vertigo/CNAM, Paris 233

    REQUTE: Quantit totale de Briques commandes

    SELECT SUM (QUANTITE)

    FROM COMMANDES

    WHERE PNOM = Brique

    REQUTE: Cot moyen de Briques fournies

    SELECT AVG (PRIX) SELECT SUM (PRIX)/COUNT(PRIX)

    FROM FOURNITURE ou FROM FOURNITURE

    WHERE PNOM = Brique WHERE PNOM = Brique

  • Vertigo/CNAM, Paris 234

    REQUTE: Le prix des briques qui sont le plus chres.

    SELECT MAX (PRIX)

    FROM FOURNITURE

    WHERE PNOM = Briques;

  • Vertigo/CNAM, Paris 235

    REQUTE: Fournisseurs des Briques au cot moyen des Briques

    SELECT FNOM

    FROM FOURNITURE

    WHERE PNOM = Brique AND

    PRIX < (SELECT AVG(PRIX)

    FROM FOURNITURE

    WHERE PNOM = Brique)

  • Vertigo/CNAM, Paris 236

    Oprations dAgrgation

  • Vertigo/CNAM, Paris 237

    GROUP BY

    REQUTE: Nombre de fournisseurs par ville

    SELECT VILLE, COUNT(FNOM)

    FROM FOURNISSEUR

    GROUP BY VILLE

  • Vertigo/CNAM, Paris 238

    LA BASE ET LE RESULTAT :

    VILLE FNOM

    PARIS TOTO

    PARIS DUPOND

    LYON DURAND

    LYON LUCIEN

    LYON REMI

    VILLE COUNT(FNOM)

    PARIS 2

    LYON 3

    NOTE: La clause GROUP BY permet de prciser les attributs de partitionnement desrelations declares dans la clause FROM. Par exemple on regroupe les fournisseurs parville.

  • Vertigo/CNAM, Paris 239

    REQUTE: Donner pour chaque produit fourni son cot moyen

    SELECT PNOM, AVG (PRIX)

    FROM FOURNITURE

    GROUP BY PNOM

    RSULTAT:

    PNOM AVG (PRIX)

    BRIQUE 10.5

    ARDOISE 9.8

    NOTE: Les fonctions de calcul appliques au rsultat de rgroupement sont directementindiques dans la clause SELECT. Par exemple le calcul de la moyenne se fait par

    produit obtenu au rsultat aprs le regroupement.

  • Vertigo/CNAM, Paris 240

    HAVING

    REQUTE: Produits fournis par deux ou plusieurs fournisseurs avec un cot suprieur

    de 100

    SELECT PNOM

    FROM FOURNITURE

    WHERE PRIX > 100

    GROUP BY PNOM

    HAVING COUNT(*) >= 2

  • Vertigo/CNAM, Paris 241

    AVANT LA CLAUSE HAVING

    PNOM FNOM PRIX

    BRIQUE TOTO 105

    ARDOISE LUCIEN 110

    ARDOISE DURAND 120

    APRS LA CLAUSE HAVING

    PNOM FNOM PRIX

    ARDOISE LUCIEN 110

    ARDOISE DURAND 120

    NOTE: La clause HAVING permet dliminer des partitionnements, comme la clauseWHERE limine des -uplets du rsultat dune requte. Par exemple on garde lesproduits dont le nombre des fournisseurs est 2. De cette faon des conditions deslection peuvent tre appliques avant le calcul dagrgat (clause WHERE) mais aussi

    aprs (clause HAVING).

  • Vertigo/CNAM, Paris 242

    REQUTE: Produits fournis et leur cot moyen pour les fournisseurs dont le sige est

    Paris seulement si le cot minimum du produit est suprieur 1000F

    SELECT PNOM, AVG(PRIX)

    FROM FOURNITURE, FOURNISSEUR

    WHERE VILLE = Paris AND

    FOURNITURE.FNOM = FOURNISSEUR.FNOM

    GROUP BY PNOM

    HAVING MIN(PRIX) > 1000

  • Vertigo/CNAM, Paris 243

    ORDER BY

    En gnral, le rsultat dune requte SQL nest pas tri. Pour trier le rsultat par rapport

    aux valeurs dun ou de plusieurs attributs, on utilise la clause ORDER BY :

    SELECT VILLE, FNOM, PNOM

    FROM FOURNITURE, FOURNISSEUR

    WHERE FOURNITURE.FNOM = FOURNISSEUR.FNOM

    ORDER BY VILLE, FNOM DESC

    Le rsultat est tri par les villes (ASC) et le noms des fournisseur dans lordre inverse

    (DESC).

  • Vertigo/CNAM, Paris 244

    Rcursion dans SQL3 (*)

  • Vertigo/CNAM, Paris 245

    Enfants (*)

    Soit le schma de relation ENFANT(NOMPAR,NOMENF)

    REQUTE: Les enfants de Charlemagne

    SQL:

    SELECT NOMENF

    FROM ENFANT

    WHERE NOMPAR=Charlemagne;

  • Vertigo/CNAM, Paris 246

    Descendants (*)

    Soit le schma de relation ENFANT(NOMPAR,NOMENF).

    REQUTE: Les descendants de Charlemagne

    SQL:

    WITH RECURSIVE DESCENDANT(NOMANC, NOMDESC) AS

    (SELECT NOMPAR, NOMENF FROM ENFANT)

    UNION

    (SELECT R1.NOMANC, R2.NOMDESC

    FROM DESCENDANT R1, DESCENDANT R2

    WHERE R1.NOMDESC=R2.NOMANC)

    SELECT NOMDESC FROM DESCENDANT

    WHERE NOMANC=Charlemagne;

  • Vertigo/CNAM, Paris 247

    Mises jour avec SQL

  • Vertigo/CNAM, Paris 248

    Cration de Tables

    On cre une table avec la commande CREATE TABLE :

    CREATE TABLE Produit(pnom VARCHAR(20),

    prix INTEGER,

    PRIMARY KEY (pnom));

    CREATE TABLE Fournisseur(fnom VARCHAR(20) PRIMARY KEY,

    ville VARCHAR(16));

    CREATE TABLE Fourniture (pnom VARCHAR(20) NOT NULL,

    fnom VARCHAR(20) NOT NULL,

    FOREIGN KEY (pnom) REFERENCES Produit,

    FOREIGN KEY (fnom) REFERENCES Fournisseur);

  • Vertigo/CNAM, Paris 249

    Destruction de Tables

    On dtruit une table avec la commande DROP TABLE :

    DROP TABLE Fourniture;

    DROP TABLE Produit;

    DROP TABLE Fournisseur;

  • Vertigo/CNAM, Paris 250

    Insertion de n-uplets

    On insre dans une table avec la commande INSERT dont voici la syntaxe.

    INSERT INTO G N VALUES NDonc on donne deux listes : celles des attributs (les ) de la table et celle des valeursrespectives de chaque attribut (les ).

    1. Bien entendu, chaque doit tre un attribut de 2. Les attributs non-indiqus restent NULL ou leur valeur par dfaut.

    3. On doit toujours indiquer une valeur pour un attribut dclar NOT NULL

  • Vertigo/CNAM, Paris 251

    Insertion : exemples

    Insertion dune ligne dans Produit :

    INSERT INTO Produit (pnom, prix)VALUES (Ojax, 15)

    Insertion de deux fournisseurs :

    INSERT INTO Fournisseur (fnom, ville)VALUES (BHV, Paris), (Casto, Paris)

    Il est possible dinsrer plusieurs lignes en utilisant SELECT

    INSERT INTO NomsProd (pnom)SELECT DISTINCT pnom FROM Produit

  • Vertigo/CNAM, Paris 252

    Modification

    On modifie une table avec la commande UPDATE dont voici la syntaxe.

    UPDATE SET 6 N WHERE condition

    Contrairement INSERT, UPDATE sapplique un ensemble de lignes.

    1. On numre les attributs que lon veut modifier.

    2. On indique chaque fois la nouvelle valeur.

    3. La clause WHERE condition permet de spcifier les lignes auxquelles sapplique lamise jour. Elle est identique au WHERE du SELECT

    Bien entendu, on ne peut pas violer les contraintes sur la table.

  • Vertigo/CNAM, Paris 253

    Modification : exemples

    Mise jour du prix dOjax :

    UPDATE Produit SET prix=17WHERE pnom = Ojax

    Augmenter les prix de tous les produits fournis par BHV par 20% :

    UPDATE Produit SET prix = prix*1.2WHERE pnom in (SELECT pnom

    FROM FournitureWHERE fnom = BHV)

  • Vertigo/CNAM, Paris 254

    Destruction

    On dtruit une ou plusieurs lignes dans une table avec la commande DELETE

    DELETE FROM WHERE condition

    Cest la plus simple des commandes de mise--jour puisque elle sapplique des lignes

    et pas des attributs. Comme prcdemment, la clause WHERE condition estindentique au WHERE du SELECT

  • Vertigo/CNAM, Paris 255

    Destruction : exemples

    Destruction des produits fournit par le BHV :

    DELETE FROM ProduitWHERE pnom in (SELECT pnom

    FROM FournitureWHERE fnom = BHV)

    Destruction du BHV :

    DELETE FROM FournisseurWHERE fnom = BHV