Tester des requêtes SQL simples avec ACCESS

publicité
Tester des requêtes SQL simples avec ACCESS
Création de la base de données
1.
2.
Ouvrir Microsoft ACCESS (outil Microsoft Office)
Cliquer sur ‘Base de données vide’
3.
4.
5.
Choisir le dossier ‘Mes Documents’ pour la sauvegarde
Donner un nom à la base de données : Base_Planning_ Sport
Cliquer sur ‘Créer’
6.
Création de la première relation ( ‘table’) :
7.
Cliquer sur le symbole enregistrer.
Katia Barré - Lycée LESAGE Vannes
Page 1
8.
9.
Choisir un nom pour la relation : ETUDIANT
Cliquer sur ‘OK’
10. Entrez les noms des attributs (‘champs’) après double-clic sur la case correspondante :
CodeEtudiant, Nom, Prénom, Adresse, CodePostal, Ville
11. Entrez les t-uplets (enregistrements) suivants :
Katia Barré - Lycée LESAGE Vannes
Page 2
12. SAUVEGARDEZ
REGULIÈREMENT VOTRE
TRAVAIL
13. La clé primaire ne vous plait pas. Nous allons la modifier :
Cliquer sur le nom de la clé primaire ‘CodeEtudiant’.
Dans le menu déroulant ‘type de données’, choisissez :Texte
14. Remplacez les valeurs de CodeEtudiant par E1, E2, etc…
15. Créer de même deux autres relations (tables) SPORT et PRATIQUE. Sauvegardez régulièrement.
Cliquer sur Créer
Katia Barré - Lycée LESAGE Vannes
Page 3
puis sur Table
16. Créer la relation SPORT
17. Créer la relation PRATIQUE
Katia Barré - Lycée LESAGE Vannes
Page 4
18. Création des liens (‘relations’) entre ces relations (‘tables’) :
Dans ‘Outils bases de données’, cliquer sur ‘relations’
19. Ajouter successivement les relations (‘tables’) créées :
Cliquer sur ‘ETUDIANT’ puis sur ‘Ajouter’ ; sur ‘PRATIQUE’ puis sur ‘Ajouter’ ; sur ‘SPORT’ puis sur
‘Ajouter.’
20. Création des liens (‘relations’) ‘UN vers PLUSIEURS’
Un étudiant peut pratiquer plusieurs sports.
Chaque sport peut être pratiqué par plusieurs étudiants.
La table PRATIQUE synthétise qui pratique quel sport.
Katia Barré - Lycée LESAGE Vannes
Page 5
Cliquer gauche sur la clé primaire de la table ETUDIANT ‘CodeEtudiant’ et faire glisser sur l’attribut
(‘champ’) ‘CodeEleve’ de la relation (‘table’) PRATIQUE.
Valider ‘Appliquer l’intégrité référentielle’. Puis cliquer sur ‘Créer’.
Le premier lien (‘ relation’) est créé.
Katia Barré - Lycée LESAGE Vannes
Page 6
21. Second lien (‘relation’), seconde façon de procéder au choix :
Cliquer sur ‘Modifier Relations’.
Dans la petite fenêtre nouvellement apparue, cliquer sur ‘nouvelle relation’.
Dans la nouvelle fenêtre, faire les choix de relations (‘tables’) et de attributs (‘champs’) indiqués.
Valider (cliquer ‘OK’)
Puis ‘Appliquer l’intégrité référentielle’, et enfin ‘Créer’.
Katia Barré - Lycée LESAGE Vannes
Page 7
Tester des requêtes SQL simples sur les relations de notre base de données
Nous allons pouvoir faire des recherches dans la base de données en écrivant des requêtes SQL.
22. Premier exemple : recherche du lieu où se pratique la danse.
Il s’agit d’une recherche dans la table SPORT.
23. Dans ‘Créer’, choisir ‘Création de requête’, puis fermer la boîte de dialogue.
24. Clic droit sur l’onglet ‘requête1’,
Choisir ‘Mode SQL’
Taper la requête SQL,
Sauvegarder,
Choisir un nom pour la requête,
Valider ‘OK’.
Katia Barré - Lycée LESAGE Vannes
Page 8
25.
Clic droit sur l’onglet de la requête ‘lieu de la danse’,
puis choisir ‘Mode Feuille de données’.
Ou bien :
Cliquer sur ‘Exécuter’
26. On visualise le résultat sous forme de table :
27. À présent une requête plus complexe.
Il s’agit d’obtenir les Nom, Prénom des étudiants qui pratiquent la danse.
Créer → Création de requête →Définition des données → Taper la requête
SELECT ETUDIANT.Nom, ETUDIANT.Prénom
FROM (ETUDIANT INNER JOIN PRATIQUE ON ETUDIANT.CodeEtudiant = PRATIQUE.CodeEleve)
INNER JOIN SPORT ON PRATIQUE.CodeSport = SPORT.CodeSport
WHERE SPORT.NomSport = 'Danse';
→ Sauvegarde sous Nom_Prenom_Danse →Clic droit sur l’onglet ‘Nom_Prenom_Danse’ → Mode
Feuille de données → lecture de Table
Remarque : on ne sait pas de quelle ‘Katia Barré’ il s’agit… Il serait utile d’afficher le numéro d’étudiant
aussi.
À vous de jouer à présent !
Katia Barré - Lycée LESAGE Vannes
Page 9
Entraînement !
Créer une nouvelle relation (‘table’) FRAIS de clé primaire CodeFrais:
Créer les liens (‘relations’) suivants :
Obtenir le résultat de la jointure des relations ETUDIANT et FRAIS
SELECT *
FROM (ETUDIANT INNER JOIN FRAIS ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant ) ;
Katia Barré - Lycée LESAGE Vannes
Page 10
Obtenir le résultat de la jointure des relations ETUDIANT, PRATIQUE et SPORT
SELECT *
FROM ((ETUDIANT INNER JOIN PRATIQUE ON ETUDIANT.CodeEtudiant =PRATIQUE.CodeEleve )
INNER JOIN SPORT ON PRATIQUE.CodeSport = SPORT.CODESport);
Obtenir le nom et nombre de pratiquants par sport
SELECT SPORT.NomSport, COUNT(*) as NombrePratiquants
FROM SPORT INNER JOIN PRATIQUE ON SPORT.CodeSport =
PRATIQUE.CodeSport
GROUP BY SPORT.NomSport
ORDER BY COUNT(*);
Obtenir les montants de l’étudiant Katia Barré de Lyon :
SELECT FRAIS.Montant
FROM ETUDIANT INNER JOIN FRAIS
ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant
WHERE ETUDIANT.Nom = 'Barré' AND ETUDIANT.Prénom = 'Katia'
AND ETUDIANT.Ville = 'LYON';
Obtenir le montant total des frais de Katia Barré de Lyon :
SELECT SUM(FRAIS.Montant) as SOMME
FROM ETUDIANT INNER JOIN FRAIS
ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant
WHERE ETUDIANT.Nom = 'Barré' AND ETUDIANT.Prénom = 'Katia' AND
ETUDIANT.Ville = 'LYON';
Obtenir les Nom, Prénom, Montant total des frais (pour l’ensemble des étudiants)
SELECT ETUDIANT.Nom, ETUDIANT.Prénom, SUM(FRAIS.Montant) as SOMME
FROM ETUDIANT INNER JOIN FRAIS
ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant
GROUP BY ETUDIANT.Nom, ETUDIANT.Prénom, ETUDIANT.CodeEtudiant;
Ce n’est pas très lisible, car plusieurs étudiants portent le même nom. Prenons l’initiative d’afficher aussi le
numéro d’étudiant, et classons par ordre croissant de montant :
Katia Barré - Lycée LESAGE Vannes
Page 11
SELECT ETUDIANT.CodeEtudiant, ETUDIANT.Nom, ETUDIANT.Prénom, SUM(FRAIS.Montant) as SOMME
FROM ETUDIANT INNER JOIN FRAIS
ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant
GROUP BY ETUDIANT.Nom, ETUDIANT.Prénom, ETUDIANT.CodeEtudiant
ORDER BY SUM(FRAIS.Montant);
Obtenir les Nom, Prénom, Moyenne des frais pour l’ensemble des étudiants classés par
moyenne
SELECT ETUDIANT.CodeEtudiant, ETUDIANT.Nom, ETUDIANT.Prénom, AVG(FRAIS.Montant) as MOYENNE
FROM ETUDIANT INNER JOIN FRAIS
ON ETUDIANT.CodeEtudiant = FRAIS.CodeEtudiant
GROUP BY ETUDIANT.Nom, ETUDIANT.Prénom, ETUDIANT.CodeEtudiant
ORDER BY AVG(FRAIS.Montant);
Obtenir les noms de sports pratiqués par les étudiants avec le montant des frais , classés
par montant des frais.
SELECT SPORT.NomSport, SUM(FRAIS.Montant) as MONTANT
FROM (((SPORT INNER JOIN PRATIQUE ON SPORT.CodeSport =
PRATIQUE.CodeSport)
INNER JOIN ETUDIANT ON ETUDIANT.CodeEtudiant = PRATIQUE.CodeEleve)
INNER JOIN FRAIS ON FRAIS.CodeEtudiant = ETUDIANT.CodeEtudiant)
GROUP BY SPORT.NomSport
ORDER BY SUM(FRAIS.Montant) DESC;
Obtenir les noms des sports et montant des frais, dont les frais sont supérieurs à 1000
euros
SELECT SPORT.NomSport, SUM(FRAIS.Montant) as MONTANT
FROM (((SPORT INNER JOIN PRATIQUE ON SPORT.CodeSport = PRATIQUE.CodeSport)
INNER JOIN ETUDIANT ON ETUDIANT.CodeEtudiant = PRATIQUE.CodeEleve)
INNER JOIN FRAIS ON FRAIS.CodeEtudiant = ETUDIANT.CodeEtudiant)
GROUP BY SPORT.NomSport
HAVING SUM(FRAIS.Montant) > 1000
ORDER BY SUM(FRAIS.Montant);
Katia Barré - Lycée LESAGE Vannes
Page 12
Téléchargement