Bases de Données
Introduction aux Bases de
Données et au langage SQL
1
Bases de Données
Introduction aux Bases de Données et au
langage SQL
Support et outils disponibles sur la page
[Link]/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
NOM PRENOM TEL.
Benoit Jean 04 76 45 65 56 Tableau
Bernard Francois 04 76 56 68 32 Libre accès
Bourdan Pierre 04 76 23 54 66
6
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 informatique
sécuriser les données :
intégrité du contenu
droits d ’accès
7
Exemples de SGBD
Microsoft QUERY
Microsoft ACCESS
Deux SGBD tout en un
8
Domaines d ’utilisation
SGBD
(Système de Gestion de Bases De Données)
Traiter un grand nombre d’objets similaires
clients pour les assurances
patients dans les hôpitaux
comptes dans les banques
livres dans les bibliothèques
…
9
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
10
Modèle Relationnel (1)
Modèle pour Organiser
BDD
Langage pour Manipuler
11
Modèle Relationnel (2)
BDD relationnelle
BDD relationnelle = collection de relations
relation = table (tableau)
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 Occurrences :
• 4 abonnés
Bourdan Jean 04 76 23 54 66
• décrits suivant
Bouvier Jacqueline 04 76 18 34 35 valeurs d’attributs
14
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
attribut(s) Bouvier Jacqueline 04 76 18 34 35
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
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
attribut(s) Bouvier Jacqueline 04 76 18 34 35
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 1 n° téléphone 1 seul abonné
Tel
16
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 )
17
Exemple de BDD
Compagnie 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 …)
18
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
définition
un exemple de requête et traitement
requêtes typiques
19
SQL - langage relationnel
Modèle pour Organiser
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 :
Nom du pilote prénommé Antoine ? Dupuis
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)
Select <liste attributs à afficher résultat>
From <listes tables>
Where <condition de filtrage des occurrences>;
23
Requête en SQL
Exemple
En Français :
Nom du pilote prénommé Antoine ?
Traduction SQL :
Select [Link]
From pilote
Where [Link] = ‘Antoine’;
24
Requête en SQL
Execution par SGBD
Select [Link]
From pilote
Where [Link] = ‘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 [Link]
From pilote
Where [Link] = ‘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 [Link] P0001 Dupuis Antoine
From pilote P0002 Simon Georges
P0003 François Luc
Where [Link] = ‘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 [Link]
From pilote
Where [Link] = ‘Antoine’;
numpilote nom prenom
P0001 Dupuis Antoine
P0002 Simon Georges
P0003 François Luc
P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François 28
Traitement des Requêtes (3)
3. Projection des attributs
Select [Link]
From pilote
Where [Link] = ‘Antoine’;
numpilote nom prenom
P0001 Dupuis Antoine
29
Traitement des Requêtes (4)
Résultat
Select [Link]
From pilote
Where [Link] = ‘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 [Link], [Link]
From pilote
Where nom prenom
Dupuis Antoine
Simon Georges
François Luc
André Georges
Arthur Louis
Mathieu François
33
Requêtes typiques
Sélection (1)
R2 : Attributs des pilotes de prénom Georges?
Select *
From pilote
Where [Link]=‘Georges’
numpilote nom prenom
P0002 Simon Georges
P0004 André Georges
34
Conditions élémentaires (1)
Syntaxe : <attribut> <Opérateur> <valeur>
Valeur
nombre : 12.6
mots : ‘ Georges ’
dates : { d ‘1999-05-15 ’ }
Opérateurs de comparaisons
=, <, <=, >, >=, <>
Conditions élémentaires :
[Link] = ‘ Georges ’
[Link] > 300
35
Conditions élémentaires (1)
Trouver les erreurs
1. [Link] = "Londres"
2. [Link] = P0002
3. [Link] < '300'
4. [Link] = 'AIRBUS 300'
5. [Link] = 'Airbus300'
6. [Link] > {d 1999-05-15}
7. [Link] = 'A0002'
8. [Link] = 'A0002'
9. [Link] ≠ 'A0002'
36
Conditions élémentaires (1)
Trouver les erreurs
[Link] = "Londres"
[Link] = 'Londres'
37
Conditions élémentaires (1)
Trouver les erreurs
[Link] = P0002
[Link] = 'P0002'
38
Conditions élémentaires (1)
Trouver les erreurs
[Link] < '300'
[Link] < 300
39
Conditions élémentaires (1)
Trouver les erreurs
[Link] = 'AIRBUS 300'
[Link] = 'Airbus 300'
40
Conditions élémentaires (1)
Trouver les erreurs
[Link] = 'Airbus300'
[Link] = 'Airbus 300'
41
Conditions élémentaires (1)
Trouver les erreurs
[Link]={d 1999-05-15}
[Link]={d '1999-05-15'}
42
Conditions élémentaires (1)
Trouver les erreurs
[Link] = 'A0002'
[Link] = 'A0002'
43
Conditions élémentaires (1)
Trouver les erreurs
[Link] = 'A0002'
[Link] = 'A0002'
44
Conditions élémentaires (1)
Trouver les erreurs
[Link] ≠ 'A0002'
[Link] <> 'A0002'
45
Conditions composées (2)
Combinaisons logiques :
AND :
[Link] = ‘Londres’ And [Link] = ‘Madrid’
Question :
numéro des vols qui vérifient cette condition.
OR :
[Link] = ‘Airbus 300’ Or [Link] = ‘Airbus 200’
Question :
numéro des avions qui vérifient cette condition.
46
Conditions composées (3)
Vols pour Madrid ou Rome
[Link] = ‘Madrid’ Or [Link] = ‘Rome’
Avions de capacité entre 200 et 300
[Link] >= 200 And [Link] <= 300
Vols de Paris vers Londres ou Berlin
[Link] = ‘Paris’ And
( [Link] = ‘Londres’ Or [Link] = ‘Berlin’ )
47
Requêtes typiques (2)
Sélection
R3 ’ : Attributs des vols décollant pour Madrid le 15/05/99 ?
Select *
From vol
Where [Link]=‘Madrid’
And [Link]={d ‘1999-05-15’}
numvol depart arrive numav numpil jdep hdep jarr harr
e
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
48
Requêtes typiques
Jointure
R6 ’ : Nom du pilote du vol V0001 ?
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
... ... ... ... ... ... ... ... ...
référence numpilote nom prenom
P0001 Dupuis Antoine
P0002 Simon Georges
P0003 François Luc
P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François 49
Schéma de BDD
Schéma des relations + références
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
... ... ... ... ... ... ... ... ...
numavion type cap numpilote nom prenom
A0001 Boeing 747 420 P0001 Dupuis Antoine
A0002 Airbus 320 300 P0002 Simon Georges
A0003 Airbus 300 280 P0003 François Luc
A0004 Boeing 737 250 P0004 André Georges
A0005 DC 10 120 P0005 Arthur Louis
A0006 Boeing 747 410 P0006 Mathieu François
50
Requêtes typiques
Jointure naturelle
R5 : Attributs des vols et des pilotes des vols?
Select *
From pilote, vol
Where [Link] = [Link]
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
2 tables 1 condition de jointure
3 tables 2 conditions de jointure
53
Encore des requêtes
R6’ : Nom du pilote du vol V0001 ?
Select [Link]
From pilote, vol
Where [Link] = [Link]
And [Link] = ‘V0001’
nom
Simon
54
Encore des requêtes
R8 : Numéro des vols, type et capacité des
avions, et nom de leurs pilotes ?
Select [Link], [Link],
[Link], [Link]
From pilote, vol, avion
Where [Link] = [Link]
And [Link] = [Link]
55
Encore des requêtes
numvol type cap nom
V0001 Boeing 747 420 Simon
V0002 Airbus 300 280 Dupuis
V0003 Airbus 320 300 François
V0004 Boeing 737 250 Mathieu
V0005 Boeing 747 410 Arthur
V0006 DC 10 120 Dupuis
V0007 Boeing 747 420 Simon
V0008 Boeing 747 420 François
56
Encore des requêtes
R8 : Numéro, type d’avion, capacités et nom des pilotes
des vols?
Select [Link], [Link], [Link], [Link]
From pilote, vol, avion
Where [Link]=[Link] And
[Link]=[Link]
numvol type cap nom
V0001 Boeing 747 420 Simon
V0002 Airbus 300 280 Dupuis
V0003 Airbus 320 300 François
V0004 Boeing 737 250 Mathieu
V0005 Boeing 747 410 Arthur
V0006 DC 10 120 Dupuis
V0007 Boeing 747 420 Simon
V0008 Boeing 747 420 François 57