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 dinterrogation 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 dinterrogation 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 dinterrogation 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 Université Paris Ouest Nanterre la Défense

2 SQL : requêtes statistiques Plusieurs types de requêtes : dinterrogation. 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 dagrégats Liste des champs servant à lagrégation de plusieurs enregistrements Autre clause de restriction qui portent sur les fonctions et champs dagrégat. 2 Les requêtes statistiques

3 3 Le calcul se fait sur les données dun groupe de plusieurs enregistrements dune table R 0. Ces enregistrements doivent avoir un point commun : des champs qui ont la même valeur. Ils sont agrégés pour nen faire plus quun qui comprend : Une partie des champs communs (éventuellement tous). Les résultats des calculs. Les enregistrements ainsi décrits forment une nouvelle table R 1 (le résultat de la requête). Requêtes statistiques

4 Syntaxe : nom_de_la_fonction (expression). Sémantique : calcule une valeur à partir des valeurs de tous les enregistrements agrégés. Les fonctions dagré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 4

5 Fonctions dagrégats : Sum Sum : fournit la somme dun champ N° Produit désignationquantité 1Marteau40 2Pelle10 3Truelle5 4Tournevis100 La quantité de tout le matériel en stock ? SELECT Sum(quantité) FROM Stock Stock Exp SELECT Sum(quantité) as QG FROM Stock QG 155 5

6 Fonctions dagrégats : Count (1/2) Count : permet de compter le nombre denregistrements 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 6 N° étudiant NomPrénomformation MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MounierAliceGestion

7 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 MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MounierAliceGestion étudiants formationNombre Gestion3 Fonctions dagrégats : Count (2/2) 7

8 8 Tous les champs sur lesquels on fait la projection (clause Select) doivent servir dans la clause dagrégat (clause Group By). Mais, un champ peut figurer dans la clause dagrégat sans servir à la projection. De même, les champs utilisés dans la restriction Where peuvent ne pas servir à la projection. Important !

9 9 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

10 SQL : les tris Plusieurs types de requêtes : dinterrogation. 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 dagrégats 10 [ORDER BY liste de champs]

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

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

13 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

14 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"

15 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"

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

17 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 nimporte quelle taille. ? : Joker qui signifie un seul caractère.

18 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

19 19 BD Cinéma : Quels sont les films dont la catégorie nest 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 dune valeur dans un champ.

20 SQL : sous-requêtes Plusieurs types de requêtes : dinterrogation. 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...) …

21 Exemple SELECT formation FROM étudiant GROUP BY formation HAVING count(N° étudiant) = ( ) N° étudiant NomPrénomformation MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MounierAliceGestion 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 maximum 3 formation Gestion


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

Présentations similaires


Annonces Google