21
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres). 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 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Embed Size (px)

Citation preview

Page 1: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Initiation aux bases de données et à la programmation événementielle

Cours N°2 :

langage d’interrogation de données.

(Les requêtes statistiques et autres).

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. 1

Page 2: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

SQL : requêtes statistiques

•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 définition des groupes]

[HAVING condition]

, fonctions d’agrégats

Liste des champs servant à l’agrégation

de plusieurs enregistrements

Autre clause de restriction qui portent sur les fonctions et

champs d’agrégat.2

Les requêtes statistiques

Page 3: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

3

• Le calcul se fait sur les données d’un groupe de plusieurs enregistrements d’une table R0.

• Ces enregistrements doivent avoir un point commun : des champs qui ont la même valeur.

• Ils sont agrégés pour n’en faire plus qu’un qui comprend :

• Une partie des champs communs (éventuellement tous).

• Les résultats des calculs.

• Les enregistrements ainsi décrits forment une nouvelle table R1 (le résultat de la requête).

Requêtes statistiques

Page 4: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

• Syntaxe : nom_de_la_fonction (expression).

• Sémantique : calcule une valeur à partir des valeurs de tous lesenregistrements agrégés.

Les fonctions d’agrégats

• Les fonctions disponibles sont :

Sum : sommeCount : compte Avg : moyenne Min : le plus petit Max : le plus grand StDev : écart type Var : variance First : premier Last : dernier 4

Page 5: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Fonctions d’agrégats : Sum

Sum : fournit la somme d’un champ

N° Produit désignation quantité

1 Marteau 40

2 Pelle 10

3 Truelle 5

4 Tournevis 100

La quantité de tout le matériel en stock ?

SELECT Sum(quantité) FROM Stock

Stock

Exp1000

155

SELECT Sum(quantité) as QG FROM Stock

QG

155 5

Page 6: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Fonctions d’agrégats : Count (1/2)

Count : permet de compter le nombre d’enregistrements

Quel est le nombre d’étudiants par formation ?

SELECT formation, count ([N° étudiant]) as NombreFROM étudiantGroup by formation

étudiants

formation Nombre

MMIA 1

Gestion 3

Anglais 2 6

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

105211 Mounier Alice Gestion

Page 7: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Quelles sont les formations de Plus de 2 étudiants?

SELECT formation, count([N° étudiant]) as NombreFROM étudiantGroup by formationHaving count([N° étudiant]) > 2

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

105211 Mounier Alice Gestion

étudiants

formation Nombre

Gestion 3

Fonctions d’agrégats : Count (2/2)

7

Page 8: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

8

Tous les champs sur lesquels on fait la projection (clause Select) doivent servir dans la clause d’agrégat (clause Group By).

Mais, un champ peut figurer dans la clause d’agrégat sans servir à la projection.

De même, les champs utilisés dans la restriction Where peuvent ne pas servir à la projection.

Important !

Page 9: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

9

ExemplesSELECT formation, count([N° étudiant])FROM étudiantGroup by formationHaving count([N° étudiant]) >2

SELECT formation, prénom, count([N° étudiant])FROM étudiantGroup by formationHaving count([N° étudiant]) >2

prénom

SELECT formation, prénom, count([N° étudiant])FROM étudiantGroup by formation, prénomHaving count([N° étudiant]) >2

SELECT formation, count([N° étudiant])FROM étudiantGroup by formation, prénomHaving count([N° étudiant]) >2

formation

formation

formation, prénom

formation, prénom

formation

formation

formation

formation prénom

Page 10: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

SQL : les tris

•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 définition des groupes]

[HAVING condition]

, fonctions d’agrégats

10

[ORDER BY liste de champs]

Page 11: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Les tris : exemple 1

11

Quelles sont les formations triées par ordre alphabétique?

SELECT formation FROM étudiantOrder By formation

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

105211 MOUNIER Alice Gestion

étudiants

Formation

Anglais

Anglais

Gestion

Gestion

Gestion

MMIA SELECT Distinct formation FROM étudiantOrder By formation

Formation

Anglais

Gestion

MMIA

Page 12: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Les tris : exemple 2

12

Quelles sont les formations triées par ordre alphabétique

inversé?

SELECT formation FROM étudiantOrder By formation DESC

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

105211 MOUNIER Alice Gestion

étudiants

Formation

MMIA

Gestion

Gestion

Gestion

Anglais

Anglais

Page 13: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Exercice : base de données Cinéma

13

•Catégories(codeC,intitulé)

•Réalisateurs(codeR,nom,prénom,nationalité)

•Films(codeF,titre,durée, refR,refC)

•Acteurs(codeA,nom,prénom)

•Joue(refF,refA)

refR

codeR

refC

codeC

refF

codeF

refA

codeA

Page 14: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

14

BD Cinéma : Qui joue dans « mission impossible » ?

•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT Acteurs.nom,Acteurs.prénom

FROM Films INNER JOIN (Acteurs INNER JOIN Joue ON Acteur.codeA =Joue.refA) ON Films.codeF=Joue.refF

WHERE films.titre= "Mission impossible"

Page 15: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

15

BD Cinéma : Combien de films a réalisé « Spielberg » ?

•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT count(codeF) as Nombre

FROM Réalisateurs INNER JOIN Films ON Films.refR=Réalisateurs.codeR

WHERE Réalisateurs.nom= "Spielberg"

Page 16: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

16

BD Cinéma : Combien de films de chaque catégorie a réalisé

« Spielberg » ?

•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT Catégorie.intitulé,count(codeF) as Nombre

FROM Réalisateurs INNER JOIN (Films INNER JOIN Catégories ON Films.refC= Catégories.codeC)

ON Films.refR=Réalisateurs.codeR

WHERE Réalisateurs.nom= "Spielberg"

Groupe By Catégorie.codeC, Catégorie.intitulé

Page 17: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

17

BD Cinéma : Quels sont les réalisateurs dont le nom

commence par « Spiel »?

•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT Réalisateurs.nom

FROM Réalisateurs

WHERE Réalisateurs.nom LIKE "Spiel*"

LIKE : compare deux expression avec des joker.* : Joker qui signifie une chaine de n’importe quelle taille.

? : Joker qui signifie un seul caractère.

Page 18: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

18

BD Cinéma : Quels sont les films de durée entre 90 et 120

minutes?•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT Films.titre

FROM Films

WHERE Filmes.durée BETWEEN 90 AND 120

SELECT Films.titre

FROM Films

WHERE Filmes.durée >= 90 AND Filmes.durée <=120

Page 19: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

19

BD Cinéma : Quels sont les films dont la catégorie n’est pas

renseignée?•Catégories(codeC,intitulé)•Réalisateurs(codeR,nom,prénom,nationalité)•Films(codeF,titre,durée,refR,refC)•Acteurs(codeA,nom,prénom)•Joue(refF,refA)

SELECT Films.titre

FROM Films

WHERE ISNULL(Filmes.refC)

ISNULL : est une fonction qui teste le renseignement d’une valeur dans un champ.

Page 20: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

SQL : sous-requêtes

•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]

20

Les sous-requêtes

, (SELECT…. )

• exp op ANY (SELECT...)• exp op ALL (SELECT...)• exp IN (SELECT...)• exp NOT IN (SELECT...)• …

Page 21: Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage dinterrogation de données. (Les requêtes statistiques et autres)

Exemple

SELECT formationFROM étudiantGROUP BY formationHAVING count(N° é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

105211 Mounier Alice Gestion

Quelle est la formation ayant la le plus grand nombre d’étudiants ?

étudiants

SELECT count(N° étudiant) as nb FROM étudiant GROUP BY formation

SELECT max(nb) as maximum FROM (

)

nb

1

3

2

maximum

3

formation

Gestion