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

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Manipulation des données dans SQL
Les requêtes Manière de dialoguer avec une base de donnée pour :

Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Initiation aux bases de données et à la programmation événementielle
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
LMD: Langage de Manipulation de Données
Contrôles d'accès aux données
BASE DE DONNEES RELATIONNELLES
LE LANGAGE SQL Langage de manipulation de données (LMD)
Initiation aux bases de données et à la programmation événementielle
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Chapitre 5 : Le langage SQL
Le langage SQL LDD : Langage de Définition de Données
SIO SLAM1: Exploitation d’un schéma de données
Traduction des opérations sous MySQL
Initiation aux bases de données et à la programmation événementielle Cours N°3 : langage de manipulation de données. Support de cours de Souheib BAARIR.
Cours 5: Sous requetes Exploitation des données Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sélection de colonnes (la projection)
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
INTRODUCTION AUX BASES DE DONNEES SQL -2
Complément sous-requêtes
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
INTRODUCTION AUX BASES DE DONNEES Algèbre relationnelle Exercices Université Panthéon-Assas Paris 2 L2 Economie-Gestion.
Le Langage de Manipulation de Données LMD Module 6.
CONCEPTS BD - Synthèse journée 1 :
Base de données Magasins.accdb
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
De Arnault Chazareix :
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Langages d’interrogation et de manipulation. N. ChaignaudGM4 - Base de données2 1. Algèbre relationnelle  Ensemble d’opérations permettant de manipuler.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 8 Support de cours rédigé par Bernard COFFIN Université.
Langage de manipulation de données (LMD)
Manipulation D’Une Base De Données
Transcription de la présentation:

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

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 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  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 Requêtes statistiques : exemple N° auteur SexeNom auteur Prénom auteur A. naissanceA. décès 1MHUGOVictor FSANDGeorge MDUMASAlexandre FYOURCENARMarguerite FDe STAËLGermaine MRACINEJean MVERLAINEPaul 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

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

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

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 Exp SELECT Sum(quantité) as QG FROM Stock QG 155 8

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 MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MounierAliceGestion

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 d’agrégats : Count (2/2) 10

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

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]

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 MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MOUNIERAliceGestion étudiants Formation Anglais Gestion MMIA SELECT Distinct formation FROM étudiant Order By formation Formation Anglais Gestion MMIA

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 MARTINMarieMMIA BERNARDLouisGestion THOMASAliceAnglais MARTINBernardAnglais MARIEPhilippeGestion MOUNIERAliceGestion étudiants Formation MMIA Gestion Anglais

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

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

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 Sous-requêtes : exemple 2