1 Exercice n°1 Soit le modèle relationnel suivant relatif à une base de données sur des représentations musicales : REPRESENTATION

(n°représentation, titre_représentation, lieu) MUSICIEN (nom, n°représentation*) PROGRAMMER (date, n°représentation*, tarif) Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * Questions : 1 - Donner la liste des titres des représentations. 2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille. 3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent. 4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la 2 Correction de l'exercice n°1 1 - Donner la liste des titres des représentations. SELECT titre_représentation FROM REPRESENTATION ; 2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille. SELECT titre_représentation FROM REPRESENTATION WHERE lieu="Opéra Bastille" ; 3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent. SELECT nom, titre_représentation FROM MUSICIEN, REPRESENTATION WHERE MUSICIEN.n°représentation = REPRESENTATION.n°représentation ; 4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96. SELECT titre_représentation, lieu, tarif FROM REPRESENTATION, PROGRAMMER WHERE PROGRAMMER.n°représentation = REPRESENTATION.n°représentation AND date='14/06/96' ; Exercice n°2 Soit le modèle relationnel suivant relatif à la gestion des notes annuelles d'une promotion d'étudiants : ETUDIANT(N°Etudiant, Nom, Prénom) MATIERE(CodeMat, LibelléMat, CoeffMat) EVALUER(N°Etudiant*, CodeMat*, Date, Note) Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * Questions : 1 - Quel est le nombre total d'étudiants ? 2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus basse ? 3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?

7 .Quelles sont les moyennes de chaque étudiant dans chacune des matières? SELECT ETUDIANT. LibelléMat. MATIERE. NomEquipe. 3 . MgEtu FROM MGETU WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) . Prénom. 2 .CodeMat AND EVALUER. 4 .Quelles sont les moyennes par matière ? SELECT LibelléMat.Quelle est la moyenne générale de la promotion ? On utilisera la requête de la question 5 comme table source 7 . ETUDIANT WHERE EVALUER.Quel est le nombre total d'étudiants ? SELECT COUNT(*) FROM ETUDIANT .Quelles sont. Prénom. Prénom. Exercice n°3 Soit le modèle relationnel suivant relatif à la gestion simplifiée des étapes du Tour de France 97.Quelle est la moyenne générale de la promotion ? Avec la vue MGETU de la question 5 : SELECT AVG(MgEtu) FROM MGETU . Nom.N°Etudiant.N°Etudiant GROUP BY ETUDIANT.Quelle est la moyenne générale de chaque étudiant ? SELECT N°Etudiant.4 . MAX(Note) FROM EVALUER . parmi l'ensemble des notes. 6 . CoeffMat. AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY LibelléMat . Nom.CodeMat = MATIERE. 5 . SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu FROM MOYETUMAT GROUP BY N°Etudiant.Quelle est la moyenne générale de chaque étudiant ? On utilisera la requête de la question 3 comme table source 6 . la note la plus haute et la note la plus basse ? SELECT MIN(Note). CodePays*) .Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ? Avec la vue MGETU de la question 5 : SELECT N°Etudiant.Quelles sont les moyennes par matière ? On utilisera la requête de la question 3 comme table source 5 . DirecteurSportif) COUREUR(NuméroCoureur.Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ? On utilisera la requête de la question 5 comme table source 4 Correction de l'exercice n°2 1 . LibelléMat. Nom. Prénom. Nom. Prénom .N°Etudiant.N°Etudiant = ETUDIANT. NomCoureur. AVG(Note) AS MoyEtuMat FROM EVALUER. Nom. CodeEquipe*. CoeffMat. dont une des étapes de type "contre la montre individuel" se déroula à Saint-Etienne : EQUIPE(CodeEquipe.

3 . nom et pays des coureurs) ? SELECT NuméroCoureur.CodeType=B. PAYS C WHERE A. NomCoureur. CodeType*) PARTICIPER(NuméroCoureur*. 4 . km.CodeEquipe=B.NuméroCoureur GROUP BY NuméroCoureur. COUREUR B WHERE A.Quel est le nombre de kilomètres total des étapes de type "Haute Montagne"? 4 . TempsRéalisé) ATTRIBUER_BONIFICATION(NuméroEtape*.Quel est le nombre de kilomètres total du Tour de France 97 ? SELECT SUM(Nbkm) FROM ETAPE . 6 .Quel est le classement par équipe à l'issue des 13 premières étapes (nom et temps des équipes) ? COPEMED . NbSecondes. VilleDép. DateEtape. code équipe.CodePays And NomEquipe="FESTINA" . NomPays) TYPE_ETAPE(CodeType.Quelle est la composition de l'équipe Festina (Numéro. nom et pays des coureurs) ? 2 . COUREUR B .Quel est le classement général des coureurs (nom.CodeType And LibelléType="HAUTE MONTAGNE" . code équipe. LibelléType) ETAPE(NuméroEtape. COUREUR B. NuméroEtape*.Formation SGBD .Quelle est la composition de l'équipe FESTINA (Numéro. TYPE_ETAPE B WHERE A. code pays et temps des coureurs) à l'issue des 13 premières étapes sachant que les bonifications ont été intégrées dans les temps réalisés à chaque étape ? 7 .PAYS(CodePays.Quel est le classement général des coureurs (nom.ACCESS Tunis.NuméroCoureur=B. VilleArr.CodeEquipe And B. CodePays. 2 .Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ? SELECT NomCoureur FROM COUREUR WHERE NuméroCoureur NOT IN (SELECT NuméroCoureur FROM ATTRIBUER_BONIFICATION) .Quel est le nombre de kilomètres total des étapes de type HAUTE MONTAGNE ? SELECT SUM(Nbkm) FROM ETAPE A. NomPays FROM EQUIPE A. Rang.Quel est le nombre de kilomètres total du Tour de France 97 ? 3 . 25 septembre – 2 octobre 2001 6 Correction de l'exercice n°3 1 .CodePays=C. CodeEquipe. NbKm. code pays et temps des coureurs) à l'issue des 13 premières étapes sachant que les bonifications ont été intégrées dans les temps réalisés à chaque étape ? SELECT NomCoureur. NomCoureur HAVING COUNT(*)=(SELECT COUNT(*) FROM ETAPE) . SUM(TempsRéalisé) AS Total FROM PARTICIPER A.Quels sont les noms des coureurs qui ont participé à toutes les étapes ? 6 .Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ? 5 .Quels sont les noms des coureurs qui ont participé à toutes les étapes ? SELECT NomCoureur FROM PARTICIPER A. 5 . NuméroCoureur*) Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * Questions : 1 .

NuméroCoureur. Pour créer la procédure stockée. Dans la boîte de dialogue Spécifier des valeurs pour les paramètres de modèle. 3. 7. Dans l'éditeur de requêtes. 9. dans le menu Requête. 8.CodeEquipe And NuméroEtape<=13 GROUP BY B. COUREUR B. puis cliquez sur Nouvelle procédure stockée. la base de données AdventureWorks2008R2. CodeEquipe.CodeEquipe=C.Quel est le classement par équipe à l'issue des 13 premières étapes (nom et temps des équipes) ? SELECT NomEquipe. JobTitle. 7 . Pour créer un exemple de procédure stockée 1. EQUIPE C WHERE A. puis Programmabilité. SUM(TempsRéalisé) AS Total FROM PARTICIPER A. Department FROM HumanResources. NomEquipe ORDER BY Total.NuméroCoureur=B. comparez les instructions avec les informations ci-dessus et apportez les corrections nécessaires.NuméroCoureur And B. . cliquez sur Spécifier les valeurs des paramètres de modèle. 4. connectez-vous à une instance du moteur de base de données et développez-la. 5. Cliquez avec le bouton droit sur Procédures stockées.WHERE A.NuméroCoureur=B. Développez Bases de données. entrez les valeurs ci-dessous pour les paramètres affichés.NuméroCoureur and NuméroEtape<=13 GROUP BY A. 2. Paramètre Valeur Auteur Votre nom Date de création Date du jour Description Retourne des données sur les employés. CodePays ORDER BY Total.CodeEquipe. remplacez l'instruction SELECT par l'instruction suivante : SELECT FirstName. Cliquez sur OK. Pour tester la syntaxe. Dans l'Explorateur d'objets. Dans le menu Requête. cliquez sur Analyser. Procedure_name HumanResources.vEmployeeDepartment WHERE FirstName = @FirstName AND LastName = @LastName.uspGetEmployees @Param1 @LastName @Datatype_For_Param1 nvarchar (50) Default_Value_For_Param1 NULL @Param2 @FirstName @Datatype_For_Param2 nvarchar (50) Default_Value_For_Param2 NULL 6. cliquez sur Exécuter. LastName. dans le menu Requête. NomCoureur. Si un message d'erreur est retourné.

Pour enregistrer le script. Dans la fenêtre de requête. Entrez un nouveau nom de fichier. dans la barre d'outils. GO EXECUTE HumanResources. Dans le menu Requête. cliquez sur Exécuter. entrez les instructions suivantes : USE AdventureWorks2008R2.10. puis cliquez sur Enregistrer. . dans le menu Fichier. cliquez sur Enregistrer. Pour exécuter la procédure stockée. GO 13. @LastName = N'Margheim'. 11. 12.uspGetEmployees @FirstName = N'Diane'. cliquez sur Nouvelle requête.