Exo SQL
Exo SQL
Exo SQL
, titre_reprsentation, lieu) MUSICIEN (nom, nreprsentation*) PROGRAMMER (date, nreprsentation*, tarif) Remarque : les cls primaires sont soulignes et les cls trangres sont marques par * Questions : 1 - Donner la liste des titres des reprsentations. 2 - Donner la liste des titres des reprsentations ayant lieu l'opra Bastille. 3 - Donner la liste des noms des musiciens et des titres des reprsentations auxquelles ils participent. 4 - Donner la liste des titres des reprsentations, les lieux et les tarifs pour la 2 Correction de l'exercice n1 1 - Donner la liste des titres des reprsentations. SELECT titre_reprsentation FROM REPRESENTATION ; 2 - Donner la liste des titres des reprsentations ayant lieu l'opra Bastille. SELECT titre_reprsentation FROM REPRESENTATION WHERE lieu="Opra Bastille" ; 3 - Donner la liste des noms des musiciens et des titres des reprsentations auxquelles ils participent. SELECT nom, titre_reprsentation FROM MUSICIEN, REPRESENTATION WHERE MUSICIEN.nreprsentation = REPRESENTATION.nreprsentation ; 4 - Donner la liste des titres des reprsentations, les lieux et les tarifs pour la journe du 14/09/96. SELECT titre_reprsentation, lieu, tarif FROM REPRESENTATION, PROGRAMMER WHERE PROGRAMMER.nreprsentation = REPRESENTATION.nreprsentation AND date='14/06/96' ; Exercice n2 Soit le modle relationnel suivant relatif la gestion des notes annuelles d'une promotion d'tudiants : ETUDIANT(NEtudiant, Nom, Prnom) MATIERE(CodeMat, LibellMat, CoeffMat) EVALUER(NEtudiant*, CodeMat*, Date, Note) Remarque : les cls primaires sont soulignes et les cls trangres sont marques 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 matires ?
4 - Quelles sont les moyennes par matire ? On utilisera la requte de la question 3 comme table source 5 - Quelle est la moyenne gnrale de chaque tudiant ? On utilisera la requte de la question 3 comme table source 6 - Quelle est la moyenne gnrale de la promotion ? On utilisera la requte de la question 5 comme table source 7 - Quels sont les tudiants qui ont une moyenne gnrale suprieure ou gale la moyenne gnrale de la promotion ? On utilisera la requte de la question 5 comme table source 4 Correction de l'exercice n2 1 - Quel est le nombre total d'tudiants ? SELECT COUNT(*) FROM ETUDIANT ; 2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus basse ? SELECT MIN(Note), MAX(Note) FROM EVALUER ; 3 - Quelles sont les moyennes de chaque tudiant dans chacune des matires? SELECT ETUDIANT.NEtudiant, Nom, Prnom, LibellMat, CoeffMat, AVG(Note) AS MoyEtuMat FROM EVALUER, MATIERE, ETUDIANT WHERE EVALUER.CodeMat = MATIERE.CodeMat AND EVALUER.NEtudiant = ETUDIANT.NEtudiant GROUP BY ETUDIANT.NEtudiant, Nom, Prnom, LibellMat, CoeffMat; 4 - Quelles sont les moyennes par matire ? SELECT LibellMat, AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY LibellMat ; 5 - Quelle est la moyenne gnrale de chaque tudiant ? SELECT NEtudiant, Nom, Prnom, SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu FROM MOYETUMAT GROUP BY NEtudiant, Nom, Prnom ; 6 - Quelle est la moyenne gnrale de la promotion ? Avec la vue MGETU de la question 5 : SELECT AVG(MgEtu) FROM MGETU ; 7 - Quels sont les tudiants qui ont une moyenne gnrale suprieure ou gale la moyenne gnrale de la promotion ? Avec la vue MGETU de la question 5 : SELECT NEtudiant, Nom, Prnom, MgEtu FROM MGETU WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ; Exercice n3 Soit le modle relationnel suivant relatif la gestion simplifie des tapes du Tour de France 97, dont une des tapes de type "contre la montre individuel" se droula Saint-Etienne : EQUIPE(CodeEquipe, NomEquipe, DirecteurSportif) COUREUR(NumroCoureur, NomCoureur, CodeEquipe*, CodePays*)
PAYS(CodePays, NomPays) TYPE_ETAPE(CodeType, LibellType) ETAPE(NumroEtape, DateEtape, VilleDp, VilleArr, NbKm, CodeType*) PARTICIPER(NumroCoureur*, NumroEtape*, TempsRalis) ATTRIBUER_BONIFICATION(NumroEtape*, km, Rang, NbSecondes, NumroCoureur*) Remarque : les cls primaires sont soulignes et les cls trangres sont marques par * Questions : 1 - Quelle est la composition de l'quipe Festina (Numro, nom et pays des coureurs) ? 2 - Quel est le nombre de kilomtres total du Tour de France 97 ? 3 - Quel est le nombre de kilomtres total des tapes de type "Haute Montagne"? 4 - 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 ? 6 - Quel est le classement gnral des coureurs (nom, code quipe, code pays et temps des coureurs) l'issue des 13 premires tapes sachant que les bonifications ont t intgres dans les temps raliss chaque tape ? 7 - Quel est le classement par quipe l'issue des 13 premires tapes (nom et temps des quipes) ? COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre 2 octobre 2001 6 Correction de l'exercice n3 1 - Quelle est la composition de l'quipe FESTINA (Numro, nom et pays des coureurs) ? SELECT NumroCoureur, NomCoureur, NomPays FROM EQUIPE A, COUREUR B, PAYS C WHERE A.CodeEquipe=B.CodeEquipe And B.CodePays=C.CodePays And NomEquipe="FESTINA" ; 2 - Quel est le nombre de kilomtres total du Tour de France 97 ? SELECT SUM(Nbkm) FROM ETAPE ; 3 - Quel est le nombre de kilomtres total des tapes de type HAUTE MONTAGNE ? SELECT SUM(Nbkm) FROM ETAPE A, TYPE_ETAPE B WHERE A.CodeType=B.CodeType And LibellType="HAUTE MONTAGNE" ; 4 - Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ? SELECT NomCoureur FROM COUREUR WHERE NumroCoureur NOT IN (SELECT NumroCoureur FROM ATTRIBUER_BONIFICATION) ; 5 - Quels sont les noms des coureurs qui ont particip toutes les tapes ? SELECT NomCoureur FROM PARTICIPER A, COUREUR B WHERE A.NumroCoureur=B.NumroCoureur GROUP BY NumroCoureur, NomCoureur HAVING COUNT(*)=(SELECT COUNT(*) FROM ETAPE) ; 6 - Quel est le classement gnral des coureurs (nom, code quipe, code pays et temps des coureurs) l'issue des 13 premires tapes sachant que les bonifications ont t intgres dans les temps raliss chaque tape ? SELECT NomCoureur, CodeEquipe, CodePays, SUM(TempsRalis) AS Total FROM PARTICIPER A, COUREUR B
WHERE A.NumroCoureur=B.NumroCoureur and NumroEtape<=13 GROUP BY A.NumroCoureur, NomCoureur, CodeEquipe, CodePays ORDER BY Total; 7 - Quel est le classement par quipe l'issue des 13 premires tapes (nom et temps des quipes) ? SELECT NomEquipe, SUM(TempsRalis) AS Total FROM PARTICIPER A, COUREUR B, EQUIPE C WHERE A.NumroCoureur=B.NumroCoureur And B.CodeEquipe=C.CodeEquipe And NumroEtape<=13 GROUP BY B.CodeEquipe, NomEquipe ORDER BY Total;
SELECT FirstName, LastName, JobTitle, Department FROM HumanResources.vEmployeeDepartment WHERE FirstName = @FirstName AND LastName = @LastName;
8. Pour tester la syntaxe, dans le menu Requte, cliquez sur Analyser. Si un message d'erreur est retourn, comparez les instructions avec les informations ci-dessus et apportez les corrections ncessaires. 9. Pour crer la procdure stocke, dans le menu Requte, cliquez sur Excuter.
10. Pour enregistrer le script, dans le menu Fichier, cliquez sur Enregistrer. Entrez un nouveau nom de fichier, puis cliquez sur Enregistrer. 11. Pour excuter la procdure stocke, dans la barre d'outils, cliquez sur Nouvelle requte. 12. Dans la fentre de requte, entrez les instructions suivantes :