Académique Documents
Professionnel Documents
Culture Documents
1
Bases de Données
Introduction aux Bases de Données et au
langage SQL
ybertini.free.fr/aes
2
But des Bases de Données (BDD)
Stocker
Informations
Consulter
3
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
4
I- Définitions (1)
Base de données (BDD) :
ensemble de données
organisées suivant un modèle
consultable par de nombreux utilisateurs
5
Exemple de BDD
Annuaire téléphonique
6
I- Définitions (2)
SGBD pour support informatique
(Système de Gestion de Bases De Données)
7
Exemples de SGBD
Microsoft QUERY
Microsoft ACCESS
8
Domaines d ’utilisation
SGBD
(Système de Gestion de Bases De Données)
9
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
10
Modèle Relationnel (1)
BDD
Langage pour Manipuler
11
Modèle Relationnel (2)
BDD relationnelle
12
Modèle Relationnel (3)
La Relation - définition
Nom : ANNUAIRE
ANNUAIRE
Attributs :
(NOM, PRENOM, TEL)
NOM PRENOM TEL
Benoit Jean 04 76 45 65 56
Benoit Francois 04 76 56 68 32
Clé d ’une relation: Bourdan Jean 04 76 23 54 66
si
la valeur de la clé est fixée
une seule occurrence possède cette valeur
15
Modèle Relationnel (5)
Clé de relation NOM
Benoit
PRENOM
Jean
TEL
04 76 45 65 56
Benoit Francois 04 76 56 68 32
Clé d ’une relation: Bourdan Jean 04 76 23 54 66
si
la valeur de la clé est fixée
une seule occurrence possède cette valeur
16
Modèle Relationnel (6)
Schéma de relation
Schéma d ’une relation :
Nom relation ( clé, attribut1, attribut2, … )
Schéma de l’ANNUAIRE :
19
SQL - langage relationnel
BDD
Langage pour Manipuler
20
SQL - langage relationnel
Définition
Structured Query Langage (SQL)
langage d’interrogation (Anglais)
inventé par IBM (1973)
Requête SQL
Réponse : relation
SGBD 21
Requête en Français
Exemple :
PRENOM = ‘Antoine’
Démarche :
1. tables (relations) mises en jeu
2. attributs
3. conditions de filtrage
valeurs imposées aux attributs des occurrences
22
Requête en SQL
Définition
3 parties (SFW)
23
Requête en SQL
Exemple
En Français :
Nom du pilote prénommé Antoine ?
Traduction SQL :
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;
24
Requête en SQL
Execution par SGBD
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’ ;
RELATION_REP
nom
Dupuis
25
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.nom
From pilote
Where pilote.prenom = ‘Antoine’ ;
26
Traitement des Requêtes
1. Choix des Tables
VOL
numvol depart arrivee numav numpil jdep hdep jarr harr
V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
V0004 Londres Madrid A0004 P0006 16/05/99 06:20 16/05/99 09:30
V0005 Bruxelles Rome A0006 P0005 16/05/99 10:00 16/05/99 15:10
V0006 Berlin Amsterdam A0005 P0001 16/05/99 14:30 16/05/99 17:00
V0007 Paris Bruxelles A0001 P0002 16/05/99 18:00 16/05/99 20:00
V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
PILOTE
numpilote nom prenom
Select pilote.nom P0001 Dupuis Antoine
From pilote P0002 Simon Georges
P0003 François Luc
Where pilote.prenom = ‘Antoine’; P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François
AVION
numavion type cap
A0001 Boeing 747 420
A0002 Airbus 320 300
A0003 Airbus 300 280
A0004 Boeing 737 250
A0005 DC 10 120
27
A0006 Boeing 747 410
Traitement des Requêtes
2. Sélection des occurrences
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;
29
Traitement des Requêtes (4)
Résultat
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’
nom
Dupuis
30
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
définition
un exemple de requête et traitement
requêtes typiques
Projection
Sélection
jointure
31
Requêtes typiques
Projection
R1 : Nom et prénom de tous les pilotes ?
Select *
From pilote
Where pilote.prenom=‘Georges’
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 = P0002
3. 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'
36
Conditions élémentaires (1)
Trouver les erreurs
vol.depart = "Londres"
vol.depart = 'Londres'
37
Conditions élémentaires (1)
Trouver les erreurs
vol.numpil = P0002
vol.numpil = 'P0002'
38
Conditions élémentaires (1)
Trouver les erreurs
avion.cap < '300'
39
Conditions élémentaires (1)
Trouver les erreurs
avion.type = 'AIRBUS 300'
40
Conditions élémentaires (1)
Trouver les erreurs
avion.type = 'Airbus300'
41
Conditions élémentaires (1)
Trouver les erreurs
vol.jdep={d 1999-05-15}
vol.jdep={d '1999-05-15'}
42
Conditions élémentaires (1)
Trouver les erreurs
vol.numavion = 'A0002'
vol.numav = 'A0002'
43
Conditions élémentaires (1)
Trouver les erreurs
avions.numavion = 'A0002'
avion.numavion = 'A0002'
44
Conditions élémentaires (1)
Trouver les erreurs
vol.numav ≠ '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)
47
Requêtes typiques (2)
Sélection
R3 ’ : Attributs des vols décollant pour Madrid le 15/05/99 ?
Select *
From vol
Where vol.arrivee=‘Madrid’
And vol.jdep={d ‘1999-05-15’}
48
Requêtes typiques
Jointure
R6 ’ : Nom du pilote du vol V0001 ?
Select *
From pilote, vol
Where pilote.numpilote = vol.numpil
numpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harr
P0002 Simon Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0001 Dupuis Antoine V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
P0003 François Luc V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
P0006 Mathieu François V0004 Londres Madrid A0004 P0006 16/05/99 06:20 16/05/99 09:30
P0005 Arthur Louis V0005 Bruxelles Rome A0006 P0005 16/05/99 10:00 16/05/99 15:10
P0001 Dupuis Antoine V0006 Berlin Amsterdam A0005 P0001 16/05/99 14:30 16/05/99 17:00
P0002 Simon Georges V0007 Paris Bruxelles A0001 P0002 16/05/99 18:00 16/05/99 20:00
P0003 François Luc V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 5121:30
Requêtes typiques
Produit cartésien
Select *
From pilote, vol Page 4
numpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harr
P0001 Dupuis Antoine V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0002 Simon Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0003 François Luc V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0004 André Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0005 Arthur Louis V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0006 Mathieu François V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
... ... ... ... ... ... ... ... ... ... ... ...
P0001 Dupuis Antoine V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0002 Simon Georges V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0003 François Luc V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0004 André Georges V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0005 Arthur Louis V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0006 Mathieu François V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
52
Requêtes typiques
Jointure
NE PAS OUBLIER
CONDITION DE JOINTURE
53
Encore des requêtes
Select pilote.nom
From pilote, vol
Where pilote.numpilote = vol.numpil
And vol.numvol = ‘V0001’
nom
Simon
54
Encore des requêtes
55
Encore des requêtes