View
111
Download
4
Category
Preview:
Citation preview
1
Initiation aux bases de données et à la programmation événementielle
Cours N°2 :
Introduction au langage d’interrogation de données.
Support de cours de Souheib BAARIR.
Page web : pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htmE-mail : souheib.baarir@u-paris10.fr
Université Paris Ouest Nanterre la Défense.2009-2010.
2
BD relationnelle
Requêtes de sélection de base
A B
vert allumé
vert éteint
rouge allumé
3
Relations tables
Table B Table C
A = {vert, jaune, rouge}, B = {allumé, éteint},
C = {(vert, allumé),(vert, éteint), (rouge, allumé)}
Les valeurs d’une « colonne »
appartiennent à un même domaine
On parle de « champ »
En-tête de colonne : le nom
du champ
Chaque « ligne » est
un n-uplet de la relation
On parle d’ « enregistrement »
B
allumé
éteint
4
Tables : rôles des champs Information (intrinsèque) : définit une donnée particulière.
Identifiant (Clé primaire) : ensemble de champs dont les valeurs permettent de distinguer les enregistrements les uns aux autres. Il peut être simple (un seul champ) ou composé (plusieurs champs).
Référence (Clé étrangère, Clé externe) : champ qui est clé primaire d’une autre relation.
code adresse
ville Dép.
1 Paris 75
2 Versailles 78
3 Nanterre 92
4 Suresnes 92
nom prénom formation
MARTIN Marie MMIA
BERNARD Louis Gestion
THOMAS Alice Anglais
MARTIN Bernard Anglais
MARIE Philippe Gestion
N° étudiant nom Prénom formation
105230 MARTIN Marie MMIA
105234 BERNARD Louis Gestion
105237 THOMAS Alice Anglais
105239 MARTIN Bernard Anglais
105250 MARIE Philippe Gestion
Référenceadresse
2
3
3
2
4
ville Dép.
Paris 75
Versailles 78
Nanterre 92
Suresnes 92
Structured Query Language (SQL)
•Plusieurs types de requêtes : d’interrogation. de manipulation : insert, update, delete… de définition : create, alter, drop…
SELECT [DISTINCT] liste de champs
FROM liste de tables
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY liste de colonnes]
Une nouvelle Table :• mettant en relation plus tables,• exhibant de nouvelles données,• cachant des données inutiles,• …
ville TableR1.dept TableR2.dept région
Rouen 76 28 Centre
Lyon 69 28 Centre
Rouen 76 69 Rhône-Alpes
Lyon 69 69 Rhône-Alpes
ville dept
Rouen 76
Lyon 69
dept Région
28 Centre
69 Rhône-Alpes
6
SQL : produit Cartésien TableR1 TableR2
TableR1•TableR2
SELECT * FROM TableR1,TableR2
PRODUIT(TableR1,TableR2)
SQ
LDeux champs portent le même
nom dans TableR1 et TableR2 :
Différenciés par le nom de la table
associé
nom prénom formation adresse
MARTIN Marie MMIA Versailles
BERNARD Louis Gestion Nanterre
THOMAS Alice Anglais Nanterre
MARTIN Bernard Anglais Suresnes
7
SQL : Projectionétudiant
PROJECTION (nom,prénom) (étudiant)
SELECT nom, prénom FROM étudiant;
SQ
L
étudiant-proj
nom prénom
MARTIN Marie
BERNARD Louis
THOMAS Alice
MARTIN Bernard
le nom et prénom de tous les étudiants ?
nom prénom formation adresse
MARTIN Marie MMIA Versailles
BERNARD Louis Gestion Nanterre
THOMAS Alice Anglais Nanterre
MARTIN Bernard Anglais Suresnes
8
SQL : Restrictionétudiant
Étudiant-nanterroisRESTRICTION (adresse = Nanterre) (étudiant)
SELECT * FROM étudiant WHERE adresse = "Nanterre";
SQ
L
nom prénom formation adresse
BERNARD Louis Gestion Nanterre
THOMAS Alice Anglais Nanterre
toutes les informations sur les
étudiants Nanterrois ?
nom prénom formation adresse
MARTIN Marie MMIA Versailles
BERNARD Louis Gestion Nanterre
THOMAS Alice Anglais Nanterre
MARTIN Bernard Anglais Suresnes
9
SQL : Restriction et projection
le nom et prénom des étudiants Nanterrois.
identités étudiants nanterrois
étudiant
SELECT nom, prénom FROM étudiant WHERE résidence = "Nanterre";
PROJECTION (Nom,prénom) (RESTRICTION(adresse = Nanterre) (étudiant ))
SQ
L
nom prénom
BERNARD Louis
THOMAS Alice
10
adresse étudiant
Etudiants Hauts-de-SeineSELECT étudiant.nom, étudiant.prénom, adresse.villeFROM étudiant, adresseWHERE (adresse.[code adresse]=[référence adresse]) AND (adresse.département=92);
SQL : Produit Cartésien, restriction et projection
le nom, le prénom et la ville des étudiants qui habitent le Haut-de-Seine.
PROJECTION (Nom,prénom)(RESTRICTION(référence=code adresse et département= 92) (PRODUIT(étudiant,adresse)))
SQ
L
nom prénom formation
MARTIN Marie MMIA
BERNARD Louis Gestion
THOMAS Alice Anglais
MARTIN Bernard Anglais
MARIE Philippe Gestion
N° étudiant Nom prénom formation
105230 MARTIN Marie MMIA
105234 BERNARD Louis Gestion
105237 THOMAS Alice Anglais
105239 MARTIN Bernard Anglais
105250 MARIE Philippe Gestion
Référenceadresse
2
3
3
2
4
code adresse
ville Dép.
1 Paris 75
2 Versailles 78
3 Nanterre 92
4 Suresnes 92
ville Dép.
Paris 75
Versailles 78
Nanterre 92
Suresnes 92
nom prénom ville
BERNARD Louis Nanterre
THOMAS Alice Nanterre
MARIE Philippe Suresnes
11
SELECT étudiant.nom, étudiant.prénom, adresse.villeFROM étudiant, adresse WHERE (adresse.[code adresse]=[référence]) AND (adresse.département=92);
Produit Cartésien, restriction et projection : détails des opérations (théoriquement)
PROJECTION(Nom,prénom,ville) (RESTRICTION(référence=code adresse et département= 92)
(PRODUIT(étudiant,adresse)))
N° étudiantnom prénom formation référence
code adresse
ville département
105230 MARTIN Marie MMIA 2 1 Paris 75
105230 MARTIN Marie MMIA 2 2 Versailles 78
105230 MARTIN Marie MMIA 2 3 Nanterre 92
105230 MARTIN Marie MMIA 2 4 Suresnes 92
105234 BERNARD Louis Gestion 3 1 Paris 75
105234 BERNARD Louis Gestion 3 2 Versailles 78
105234 BERNARD Louis Gestion 3 3 Nanterre 92
105234 BERNARD Louis Gestion 3 4 Suresnes 92
…
adresse étudiant N° étudiant Nom prénom formation
105230 MARTIN Marie MMIA
105234 BERNARD Louis Gestion
105237 THOMAS Alice Anglais
105239 MARTIN Bernard Anglais
105250 MARIE Philippe Gestion
Référence
2
3
3
2
4
code adresse
ville Dép.
1 Paris 75
2 Versailles 78
3 Nanterre 92
4 Suresnes 92
ville Dép.
Paris 75
Versailles 78
Nanterre 92
Suresnes 92
nom prénom ville
BERNARD Louis Nanterre
THOMAS Alice Nanterre
MARIE Philippe Suresnes
Etudiants Hauts-de-Seine
12
Produit Cartésien, restriction et projection : problèmes
le nom, le prénom et le nom du département des étudiants, qui habitent le Haut-de-Seine.
SELECT étudiant.nom, étudiant.prénom, adresse.villeFROM étudiant, adresse WHERE (adresse.[code adresse]=[référence]) AND (adresse.département=92)
PROJECTION(Nom,prénom,ville) (RESTRICTION(référence=code adresse et département= 92)
(PRODUIT(étudiant,adresse)))
• Relation intermédiaire :• Construction d’enregistrements inutiles !
• Relation finale : • On ne peut pas rajouter d’enregistrements dans la relation finale !
Solution : la jointure.
13
SQL : Jointure
est presque équivalente à une jointure
SELECT étudiant.nom, étudiant.prénom, adresse.villeFROM étudiant INNER JOIN adresse ON étudiant.référence = adresse.[Code adresse]WHERE adresse.département = 92;
SELECT étudiant.nom, étudiant.prénom,adresse.villeFROM adresse, étudiantWHERE (adresse.[code adresse]=[référence])
AND (adresse.département=92);
La première clause de restrictionIci, le nom de la table
est obligatoire
14
Jointure : détails des opérations
code adresse
ville Dép.
1 Paris 75
2 Versailles 78
3 Nanterre 92
4 Suresnes 92
nom prénom formation
MARTIN Marie MMIA
BERNARD Louis Gestion
THOMAS Alice Anglais
MARTIN Bernard Anglais
MARIE Philippe Gestion
N° étudiant nom prénom formation
105230 MARTIN Marie MMIA
105234 BERNARD Louis Gestion
105237 THOMAS Alice Anglais
105239 MARTIN Bernard Anglais
105250 MARIE Philippe Gestion
Référence
2
3
3
2
4
ville Dép.
Paris 75
Versailles 78
Nanterre 92
Suresnes 92
SELECT étudiant.nom, étudiant.prénom, adresse.villeFROM étudiant INNER JOIN adresse ON étudiant.référence = adresse.[Code adresse]WHERE adresse.département = 92;
105230 MARTIN Marie MMIA 2 2 Versailles 78
105234 BERNARD Louis Gestion 3 3 Nanterre 92
105237 THOMAS Alice Anglais 3 3 Nanterre 92
105239 MARTIN Bernard Anglais 2 2 Versailles 78
105250 MARIE Philippe Gestion 4 4 Suresnes 92
Recommended