[ppt]bases de données et langage sql · web viewbases de données introduction aux bases de...
TRANSCRIPT
2
Bases de Données
Introduction aux Bases de Données et au langage SQL
Support et outils disponibles sur la page
ybertini.free.fr/aes
5
I- Définitions (1)
Base de données (BDD) :
ensemble de donnéesorganisées suivant un modèleconsultable par de nombreux utilisateurs
6
Exemple de BDD
Annuaire téléphonique
NOM PRENOM TEL.Benoit Jean 04 76 45 65 56
Bernard Francois 04 76 56 68 32
Bourdan Pierre 04 76 23 54 66
Tableau Libre
accès
7
I- Définitions (2)
SGBD pour support informatique(Système de Gestion de Bases De Données)
Ensemble de logiciels capables :concevoir, enregistrer, consulter les données sur
support informatiquesécuriser les données :
intégrité du contenu droits d ’accès
9
Domaines d ’utilisation
SGBD (Système de Gestion de Bases De Données)
Traiter un grand nombre d’objets similairesclients pour les assurancespatients dans les hôpitauxcomptes dans les banques livres dans les bibliothèques…
11
Modèle Relationnel (1)
BDDLangage pour Manipuler
Modèle pour Organiser
Yves:
But des BDD : gerer des informations. Deux questions : comment les stocker, et comment les consulter.
12
Modèle Relationnel (2)BDD relationnelle
BDD relationnelle = collection de relations relation = table (tableau)
14
Modèle Relationnel (3)La Relation - définition
ANNUAIRE
NOM PRENOM TEL Benoit Jean 04 76 45 65 56
Benoit Francois 04 76 56 68 32
Bourdan Jean 04 76 23 54 66
Bouvier Jacqueline 04 76 18 34 35
Nom : ANNUAIREAttributs :(NOM, PRENOM, TEL)
Occurrences :• 4 abonnés • décrits suivant valeurs d’attributs
15
Modèle Relationnel (5)Clé de relation
Clé d ’une relation: attribut(s) si la valeur de la clé est fixée
une seule occurrence possède cette valeur
Question : quelle est la clé d ’ANNUAIRE ? Nom Prenom Tel
NOM PRENOM TEL Benoit Jean 04 76 45 65 56
Benoit Francois 04 76 56 68 32
Bourdan Jean 04 76 23 54 66
Bouvier Jacqueline 04 76 18 34 35
16
Modèle Relationnel (5)Clé de relation
Clé d ’une relation: attribut(s) si la valeur de la clé est fixée
une seule occurrence possède cette valeur
Question : quelle est la clé d ’ANNUAIRE ? Nom Prenom Tel
NOM PRENOM TEL Benoit Jean 04 76 45 65 56
Benoit Francois 04 76 56 68 32
Bourdan Jean 04 76 23 54 66
Bouvier Jacqueline 04 76 18 34 35
1 n° téléphone 1 seul abonné
17
Modèle Relationnel (6)Schéma de relation
Schéma d ’une relation :Nom relation ( clé, attribut1, attribut2, … )
Schéma de l’ANNUAIRE :
ANNUAIRE ( TEL ), NOM, PRENOM=
ANNUAIRE ( NOM, PRENOM, TEL )
18
Exemple de BDDCompagnie d ’Aviation
Polycopié page 2
3 relations : vol, pilote et avion. schéma des relations :
vol(numvol, depart, arrivee, numav, numpil, jdep, hdep,jarr, harr)pilote(numpilote,nom,prenom)Avion(numavion, type, cap)
Schéma de la BDD (à suivre …)
19
Plan
I - Définitions II - Modèle relationnel III- Langage SQL
définitionun exemple de requête et traitementrequêtes typiques
21
Structured Query Langage (SQL) langage d’interrogation (Anglais) inventé par IBM (1973)
SQL - langage relationnel Définition
Requête SQL
Réponse : relation
SGBD
22
Requête en Français
Exemple :
Nom du pilote prénommé Antoine ?
Démarche : 1. tables (relations) mises en jeu2. attributs3. conditions de filtrage
valeurs imposées aux attributs des occurrences
DupuisPRENOM = ‘Antoine’
23
Requête en SQLDéfinition
3 parties (SFW)
Select <liste attributs à afficher résultat>From <listes tables>Where <condition de filtrage des occurrences>;
24
Requête en SQLExemple
En Français :Nom du pilote prénommé Antoine ?
Traduction SQL :
SelectFromWhere
pilote.nompilotepilote.prenom = ‘Antoine’;
25
Requête en SQL Execution par SGBD
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’ ;
nomDupuis
RELATION_REP
26
Requête en SQL Traitement des Requêtes par SGBD
1. Choix des tables 2. Sélection des occurrences 3. Projection des attributs
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’ ;
27
Traitement des Requêtes1. Choix des Tables
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;
numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003V0004V0005V0006V0007V0008
ParisLondresBerlinLondresBruxellesBerlinParisNew York
San FranciscoMoscouMadridMadridRomeAmsterdamBruxellesParis
A0001A0003A0002A0004A0006A0005A0001A0001
P0002P0001P0003P0006P0005P0001P0002P0003
15/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99
10:0010:3011:1506:2010:0014:3018:0003:00
16/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99
09:3017:0018:0009:3015:1017:0020:0021:30
numpilote nom prenomP0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
numavion type capA0001A0002A0003A0004A0005A0006
Boeing 747Airbus 320Airbus 300Boeing 737DC 10Boeing 747
420300280250120410
VOL
PILOTE
AVION
28
Traitement des Requêtes2. Sélection des occurrences
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;
numpilote nom prenomP0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
29
Traitement des Requêtes (3)3. Projection des attributs
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;
numpilote nom prenomP0001 Dupuis Antoine
30
Traitement des Requêtes (4)Résultat
Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’
nomDupuis
31
Plan
I - Définitions II - Modèle relationnel III- Langage SQL
définitionun exemple de requête et traitement requêtes typiques
Projection Sélection jointure
32
Requêtes typiquesProjection
R1 : Nom et prénom de tous les pilotes ?
SelectFromWhere
pilotepilote.nom, pilote.prenom
nom prenomDupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
33
Requêtes typiquesSélection (1)
R2 : Attributs des pilotes de prénom Georges?
SelectFromWhere
pilote*
pilote.prenom=‘Georges’
numpilote nom prenomP0002P0004
SimonAndré
GeorgesGeorges
34
Conditions élémentaires (1)
Syntaxe : <attribut> <Opérateur> <valeur> Valeur
nombre : 12.6mots : ‘ Georges ’dates : { d ‘1999-05-15 ’ }
Opérateurs de comparaisons=, <, <=, >, >=, <>
Conditions élémentaires : pilote.prenom = ‘ Georges ’avion.cap > 300
35
Conditions élémentaires (1)Trouver les erreurs
1. vol.depart = "Londres"2. vol.numpil = P00023. avion.cap < '300'4. avion.type = 'AIRBUS 300'5. avion.type = 'Airbus300'6. vol.jdep > {d 1999-05-15}7. vol.numavion = 'A0002'8. avions.numavion = 'A0002'9. vol.numav ≠ 'A0002'
39
Conditions élémentaires (1)Trouver les erreurs
avion.type = 'AIRBUS 300'
avion.type = 'Airbus 300'
40
Conditions élémentaires (1)Trouver les erreurs
avion.type = 'Airbus300'
avion.type = 'Airbus 300'
43
Conditions élémentaires (1)Trouver les erreurs
avions.numavion = 'A0002'
avion.numavion = 'A0002'
45
Conditions composées (2) Combinaisons logiques :
AND : vol.depart = ‘Londres’ And vol.arrivee = ‘Madrid’
Question : numéro des vols qui vérifient cette condition.
OR :avion.type = ‘Airbus 300’ Or avion.type = ‘Airbus 200’
Question : numéro des avions qui vérifient cette condition.
46
Conditions composées (3)
Vols pour Madrid ou Rome
Avions de capacité entre 200 et 300
Vols de Paris vers Londres ou Berlin
vol.arrivee = ‘Madrid’ Or vol.arrivee = ‘Rome’
avion.cap >= 200 And avion.cap <= 300
vol.depart = ‘Paris’ And( vol.arrivee = ‘Londres’ Or vol.arrivee = ‘Berlin’ )
47
Requêtes typiques (2) Sélection
R3 ’ : Attributs des vols décollant pour Madrid le 15/05/99 ?
SelectFromWhere
vol*
vol.arrivee=‘Madrid’ And vol.jdep={d ‘1999-05-15’}
numvol depart arrivee
numav numpil jdep hdep jarr harr
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
48
Requêtes typiquesJointure
R6 ’ : Nom du pilote du vol V0001 ?
numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003...
ParisLondresBerlin...
San FranciscoMoscouMadrid...
A0001A0003A0002...
P0002P0001P0003...
15/05/9915/05/9915/05/99...
10:0010:3011:15...
16/05/9915/05/9915/05/99...
09:3017:0018:00...
numpilote nom prenomP0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
référence
49
Schéma de BDDSchéma des relations + références
numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003...
ParisLondresBerlin...
San FranciscoMoscouMadrid...
A0001A0003A0002...
P0002P0001P0003...
15/05/9915/05/9915/05/99...
10:0010:3011:15...
16/05/9915/05/9915/05/99...
09:3017:0018:00...
numpilote nom prenomP0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
numavion type capA0001A0002A0003A0004A0005A0006
Boeing 747Airbus 320Airbus 300Boeing 737DC 10Boeing 747
420300280250120410
50
Requêtes typiquesJointure naturelle R5 : Attributs des vols et des pilotes des vols?
SelectFromWhere
pilote, vol*
pilote.numpilote = vol.numpilnumpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harrP0002P0001P0003P0006P0005P0001P0002P0003
SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois
GeorgesAntoineLucFrançoisLouisAntoineGeorgesLuc
V0001V0002V0003V0004V0005V0006V0007V0008
ParisLondresBerlinLondresBruxellesBerlinParisNew York
San FranciscoMoscouMadridMadridRomeAmsterdamBruxellesParis
A0001A0003A0002A0004A0006A0005A0001A0001
P0002P0001P0003P0006P0005P0001P0002P0003
15/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99
10:0010:3011:1506:2010:0014:3018:0003:00
16/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99
09:3017:0018:0009:3015:1017:0020:0021:30
51
Requêtes typiquesProduit cartésien
Select *From pilote, volnumpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harrP0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
V0001V0001V0001V0001V0001V0001
ParisParisParisParisParisParis
San FranciscoSan FranciscoSan FranciscoSan FranciscoSan FranciscoSan Francisco
A0001A0001A0001A0001A0001A0001
P0002P0002P0002P0002P0002P0002
15/05/9915/05/9915/05/9915/05/9915/05/9915/05/99
10:0010:0010:0010:0010:0010:00
16/05/9916/05/9916/05/9916/05/9916/05/9916/05/99
09:3009:3009:3009:3009:3009:30
... ... ... ... ... ... ... ... ... ... ... ...P0001P0002P0003P0004P0005P0006
DupuisSimonFrançoisAndréArthurMathieu
AntoineGeorgesLucGeorgesLouisFrançois
V0008V0008V0008V0008V0008V0008
New YorkNew YorkNew YorkNew YorkNew YorkNew York
ParisParisParisParisParisParis
A0001A0001A0001A0001A0001A0001
P0003P0003P0003P0003P0003P0003
17/05/9917/05/9917/05/9917/05/9917/05/9917/05/99
03:0003:0003:0003:0003:0003:00
17/05/9917/05/9917/05/9917/05/9917/05/9917/05/99
21:3021:3021:3021:3021:3021:30
Page 4
52
Requêtes typiquesJointure
NE PAS OUBLIER CONDITION DE JOINTURE
2 tables 1 condition de jointure 3 tables 2 conditions de jointure
53
Encore des requêtes
R6’ : Nom du pilote du vol V0001 ?
SelectFromWhere
pilote, volpilote.nom
pilote.numpilote = vol.numpil And vol.numvol = ‘V0001’
nomSimon
54
Encore des requêtes
R8 : Numéro des vols, type et capacité des avions, et nom de leurs pilotes ?
Select
FromWhere
pilote, vol, avion
vol.numvol, avion.type, avion.cap, pilote.nom
pilote.numpilote = vol.numpil And vol.numav = avion.numavion
55
Encore des requêtes
numvol type cap nomV0001V0002V0003V0004V0005V0006V0007V0008
Boeing 747Airbus 300Airbus 320Boeing 737Boeing 747DC 10Boeing 747Boeing 747
420280300250410120420420
SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois
56
Encore des requêtes R8 : Numéro, type d’avion, capacités et nom des pilotes
des vols?Select vol.numvol, avion.type, avion.cap, pilote.nomFrom pilote, vol, avionWhere pilote.numpilote=vol.numpil And
vol.numav=avion.numavion
numvol type cap nomV0001V0002V0003V0004V0005V0006V0007V0008
Boeing 747Airbus 300Airbus 320Boeing 737Boeing 747DC 10Boeing 747Boeing 747
420280300250410120420420
SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois