La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "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)."— Transcription de la présentation:

1 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). 1 Souheib BAARIR. Page web : http://pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htm E-mail : souheib.baarir@u-paris10.fr Université Paris Ouest Nanterre la Défense. 2009-2010.

2 2 Données statistiques Le nombre d’étudiants de chaque formation. La moyenne des notes du module de BD. Le produit le moins acheté dans un supermarché. … Le nombre d’étudiants de chaque formation. La moyenne des notes du module de BD. Le produit le moins acheté dans un supermarché. … Une définition minimale : Données dénombrées et dénombrables ! Une définition minimale : Données dénombrées et dénombrables !

3 3 Dans une BD, l’information statistique n’est pas directement représentée … On aura, sinon, de la redondance ! Dans une BD, l’information statistique n’est pas directement représentée … On aura, sinon, de la redondance ! Sachant que les requêtes SQL de base (vus jusqu’à aujourd’hui) ne permettent qu’une extraction d’information simple…, la question est, donc, comment extraire (visualiser) les données statistiques ? Sachant que les requêtes SQL de base (vus jusqu’à aujourd’hui) ne permettent qu’une extraction d’information simple…, la question est, donc, comment extraire (visualiser) les données statistiques ? Données statistiques et BD Les requêtes statistiques

4 4  Le calcul se fait sur les données d’un groupe de plusieurs enregistrements d’une table T 0.  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 : o Une partie des champs communs (éventuellement tous). o Les résultats des calculs.  Les enregistrements ainsi décrits forment une nouvelle table T 1 (le résultat de la requête). Requêtes statistiques : principes

5 5 Requêtes statistiques : exemple N° auteur SexeNom auteur Prénom auteur A. naissanceA. décès 1MHUGOVictor18021885 2FSANDGeorge18041876 3MDUMASAlexandre18021870 4FYOURCENARMarguerite19031987 5FDe STAËLGermaine17661817 6MRACINEJean16391699 7MVERLAINEPaul18441896 Combien y a-t-il d’auteurs par sexe dans la BD ?  Deux groupes d’enregistrements : dans chaque groupe la valeur du champ sexe est identique.  Agréger les enregistrements de chaque groupe (pour n’en faire qu’un), avec le résultat des calculs. Sexe NB M4 F3 T1 T0

6 Requêtes statistiques : 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 définition des groupes] [HAVING prédicats], 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. 6 Les requêtes statistiques

7 Syntaxe : nom_de_la_fonction (expression). Sémantique : calcule une valeur à partir des valeurs de tous les enregistrements agrégés. Les fonctions d’agrégats Les fonctions disponibles sont :  Sum : somme  Count : compte  Avg : moyenne  Min : le plus petit  Max : le plus grand  StDev : écart type  Var : variance  First : premier  Last : dernier 7

8 Fonctions d’agrégats : Sum Sum : fournit la somme d’un champ N° Produit désignationquantité 1Marteau40 2Pelle10 3Truelle5 4Tournevis100 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 8

9 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 Nombre FROM étudiant Group by formation étudiants formationNombre MMIA1 Gestion3 Anglais2 9 N° étudiant NomPrénomformation 105230MARTINMarieMMIA 105234BERNARDLouisGestion 105237THOMASAliceAnglais 105239MARTINBernardAnglais 105250MARIEPhilippeGestion 105211MounierAliceGestion

10 Quelles sont les formations de plus de 2 étudiants? SELECT formation, count([N° étudiant]) as Nombre FROM étudiant Group by formation Having count([N° étudiant]) > 2 N° étudiant NomPrénomformation 105230MARTINMarieMMIA 105234BERNARDLouisGestion 105237THOMASAliceAnglais 105239MARTINBernardAnglais 105250MARIEPhilippeGestion 105211MounierAliceGestion étudiants formationNombre Gestion3 Fonctions d’agrégats : Count (2/2) 10

11 11  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 !

12 12 Exemples SELECT formation, count([N° étudiant]) FROM étudiant Group by formation Having count([N° étudiant]) >2 SELECT formation, prénom, count([N° étudiant]) FROM étudiant Group by formation Having count([N° étudiant]) >2  prénom  SELECT formation, prénom, count([N° étudiant]) FROM étudiant Group by formation, prénom Having count([N° étudiant]) >2  SELECT formation, count([N° étudiant]) FROM étudiant Group by formation, prénom Having count([N° étudiant]) >2  formation formation, prénom formation prénom

13 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 13 [ORDER BY liste de champs]

14 Les tris : exemple 1 14 Quelles sont les formations triées par ordre alphabétique? SELECT formation FROM étudiant Order By formation N° étudiant NomPrénomformation 105230MARTINMarieMMIA 105234BERNARDLouisGestion 105237THOMASAliceAnglais 105239MARTINBernardAnglais 105250MARIEPhilippeGestion 105211MOUNIERAliceGestion étudiants Formation Anglais Gestion MMIA SELECT Distinct formation FROM étudiant Order By formation Formation Anglais Gestion MMIA

15 Les tris : exemple 2 15 Quelles sont les formations triées par ordre alphabétique inversé? SELECT formation FROM étudiant Order By formation DESC N° étudiant NomPrénomformation 105230MARTINMarieMMIA 105234BERNARDLouisGestion 105237THOMASAliceAnglais 105239MARTINBernardAnglais 105250MARIEPhilippeGestion 105211MOUNIERAliceGestion étudiants Formation MMIA Gestion Anglais

16 Exercice : BD Cinéma 16 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

17 17 BD Cinéma : Qui joue dans « mission impossible » ? SELECT nom, prénom, nationalité FROM Films INNER JOIN (Acteurs INNER JOIN Joue ON Acteur.codeA =Joue.refA) ON Films.codeF=Joue.refF WHERE titre= "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)

18 18 BD Cinéma : Combien de films a réalisé « Spielberg » ? SELECT count(codeF) as Nombre FROM Réalisateurs INNER JOIN Films ON Films.refR=Réalisateurs.codeR WHERE nom= "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)

19 19 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é

20 20 BD Cinéma : Quels sont les réalisateurs dont le nom commence par « Spiel »? 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. 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)

21 21 BD Cinéma : Quels sont les films de durée entre 90 et 120 minutes? 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 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)

22 22 BD Cinéma : Quels sont les films dont la catégorie n’est pas renseignée? SELECT Films.titre FROM Films WHERE ISNULL(Filmes.refC) ISNULL : est une fonction qui teste le renseignement d’une valeur dans un champ. 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)

23 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] 23 Les sous-requêtes, (SELECT…. ) exp IN (SELECT...) exp NOT IN (SELECT...) exp op ANY (SELECT...) exp op ALL (SELECT...) EXISTS (SELECT...) NOT EXISTS (SELECT...) [GROUP BY groupes] [HAVING prédicats]

24 24 Sous-requêtes : exemple 1 SELECT nom, prénom FROM Acteurs WHERE CodeA NOT IN (SELECT refA FROM Joue) Quels sont les acteurs qui n’ont joué dans aucun film de notre BD ? 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)

25 SELECT formation FROM étudiant GROUP BY formation HAVING count(N° étudiant) = ( ) N° étudiant NomPrénomformation 105230MARTINMarieMMIA 105234BERNARDLouisGestion 105237THOMASAliceAnglais 105239MARTINBernardAnglais 105250MARIEPhilippeGestion 105211MounierAliceGestion 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 Sous-requêtes : exemple 2


Télécharger ppt "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)."

Présentations similaires


Annonces Google