14
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.htm E-mail : [email protected] Université Paris Ouest Nanterre la Défense. 2009-2010.

1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

Embed Size (px)

Citation preview

Page 1: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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 : [email protected]

Université Paris Ouest Nanterre la Défense.2009-2010.

Page 2: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

2

BD relationnelle

Requêtes de sélection de base

Page 3: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 4: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 5: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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,• …

Page 6: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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é

Page 7: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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 ?

Page 8: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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 ?

Page 9: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 10: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 11: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 12: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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.

Page 13: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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

Page 14: 1 Initiation aux bases de données et à la programmation événementielle Cours N°2 : Introduction au langage dinterrogation de données. Support de cours

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