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

Présentations similaires


Présentation au sujet: "Initiation aux bases de données et à la programmation événementielle"— 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). 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 : d’interrogation. de manipulation : insert, update, delete… de définition : create, alter, drop… Les requêtes statistiques SELECT [DISTINCT] liste de champs FROM liste de tables [WHERE prédicats] , fonctions d’agrégats Liste des champs servant à l’agrégation de plusieurs enregistrements [GROUP BY définition des groupes] [HAVING condition] Autre clause de restriction qui portent sur les fonctions et champs d’agrégat.

3 Requêtes statistiques
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).

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

5 Fonctions d’agrégats : Sum
Sum : fournit la somme d’un champ Stock La quantité de tout le matériel en stock ? N° Produit désignation quantité 1 Marteau 40 2 Pelle 10 3 Truelle 5 4 Tournevis 100 SELECT Sum(quantité) FROM Stock Exp1000 155 SELECT Sum(quantité) as QG FROM Stock QG 155

6 Fonctions d’agrégats : Count (1/2)
Count : permet de compter le nombre d’enregistrements étudiants N° étudiant Nom Prénom formation 105230 MARTIN Marie MMIA 105234 BERNARD Louis Gestion 105237 THOMAS Alice Anglais 105239 Bernard 105250 MARIE Philippe 105211 Mounier Quel est le nombre d’étudiants par formation ? SELECT formation, count ([N° étudiant]) as Nombre FROM étudiant Group by formation formation Nombre MMIA 1 Gestion 3 Anglais 2

7 Fonctions d’agrégats : Count (2/2) Quelles sont les formations de
étudiants N° étudiant Nom Prénom formation 105230 MARTIN Marie MMIA 105234 BERNARD Louis Gestion 105237 THOMAS Alice Anglais 105239 Bernard 105250 MARIE Philippe 105211 Mounier 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 formation Nombre Gestion 3

8 Important ! 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.

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

10 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] , fonctions d’agrégats [GROUP BY définition des groupes] [HAVING condition] [ORDER BY liste de champs]

11 Quelles sont les formations triées par ordre alphabétique?
Les tris : exemple 1 étudiants N° étudiant Nom Prénom formation 105230 MARTIN Marie MMIA 105234 BERNARD Louis Gestion 105237 THOMAS Alice Anglais 105239 Bernard 105250 MARIE Philippe 105211 MOUNIER Quelles sont les formations triées par ordre alphabétique? SELECT formation FROM étudiant Order By formation Formation Anglais Gestion MMIA Formation Anglais Gestion MMIA SELECT Distinct formation FROM étudiant Order By formation

12 Quelles sont les formations triées par ordre alphabétique
Les tris : exemple 2 étudiants N° étudiant Nom Prénom formation 105230 MARTIN Marie MMIA 105234 BERNARD Louis Gestion 105237 THOMAS Alice Anglais 105239 Bernard 105250 MARIE Philippe 105211 MOUNIER Quelles sont les formations triées par ordre alphabétique inversé? Formation MMIA Gestion Anglais SELECT formation FROM étudiant Order By formation DESC

13 Exercice : base de données Cinéma
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) codeC codeR codeF refR refC codeA refF refA

14 Qui joue dans « mission impossible » ?
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 Combien de films a réalisé « Spielberg » ?
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 Combien de films de chaque catégorie a réalisé « Spielberg » ?
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 Quels sont les réalisateurs dont le nom commence par « Spiel »?
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.

18 Quels sont les films de durée entre 90 et 120 minutes?
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 >= 90 AND Filmes.durée <=120 SELECT Films.titre FROM Films WHERE Filmes.durée BETWEEN 90 AND 120

19 Quels sont les films dont la catégorie n’est pas renseignée?
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.

20 SQL : sous-requêtes Plusieurs types de requêtes : d’interrogation.
de manipulation : insert, update, delete… de définition : create, alter, drop… Les sous-requêtes SELECT [DISTINCT] liste de champs FROM liste de tables [WHERE prédicats] , (SELECT…. ) exp op ANY (SELECT...) exp op ALL (SELECT...) exp IN (SELECT...) exp NOT IN (SELECT...)

21 Quelle est la formation ayant la le plus grand nombre d’étudiants ?
Exemple étudiants N° étudiant Nom Prénom formation 105230 MARTIN Marie MMIA 105234 BERNARD Louis Gestion 105237 THOMAS Alice Anglais 105239 Bernard 105250 MARIE Philippe 105211 Mounier Quelle est la formation ayant la le plus grand nombre d’étudiants ? nb 1 3 2 maximum 3 SELECT formation FROM étudiant GROUP BY formation HAVING count(N° étudiant) = ( ) SELECT max(nb) as maximum FROM ( ) SELECT count(N° étudiant) as nb FROM étudiant GROUP BY formation formation Gestion


Télécharger ppt "Initiation aux bases de données et à la programmation événementielle"

Présentations similaires


Annonces Google