Vous êtes sur la page 1sur 55

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

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

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 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’;

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 pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;

numpilote nom prenom


P0001 Dupuis 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 pilote.nom, pilote.prenom


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 pilote.prenom=‘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 :
 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'

avion.cap < 300

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'

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'

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)

 Vols pour Madrid ou Rome


vol.arrivee = ‘Madrid’ Or vol.arrivee = ‘Rome’

 Avions de capacité entre 200 et 300


avion.cap >= 200 And avion.cap <= 300

 Vols de Paris vers Londres ou Berlin


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 ?

Select *
From vol
Where vol.arrivee=‘Madrid’
And vol.jdep={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 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

 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 pilote.nom
From pilote, vol
Where pilote.numpilote = vol.numpil
And vol.numvol = ‘V0001’

nom
Simon
54
Encore des requêtes

 R8 : Numéro des vols, type et capacité des


avions, et nom de leurs pilotes ?
Select vol.numvol, avion.type,
avion.cap, pilote.nom
From pilote, vol, avion
Where pilote.numpilote = vol.numpil
And vol.numav = avion.numavion

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 vol.numvol, avion.type, avion.cap, pilote.nom
From pilote, vol, avion
Where pilote.numpilote=vol.numpil And
vol.numav=avion.numavion

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

Vous aimerez peut-être aussi