Exercice Langage SQL : " Banque "
Rédigé par , Publié le 12 Décembre 2011, Mise à jour le Mardi, 30 Novembre 1999 00:00Participez au vote ☆☆☆☆☆★★★★★
Enancé de l'Exercice
Soit le schéma de base de données relationnel suivant :
AGENCE (Num_Agence, Nom, Ville, Actif)
CLIENT (Num_Client, Nom, Ville)
COMPTE (Num_Compte, Num_Agence, Num_Client, Solde)
EMPRUNT (Num_Emprunt, Num_Agence, Num_Client, Montant)
Ecrire les requêtes suivantes en SQL :
- Liste des agences ayant des comptes-clients
- Clients ayant un compte à “Agadir”
- Clients ayant un compte ou un emprunt à “Agadir”
- Clients ayant un compte et un emprunt à “Agadir”
- Clients ayant un compte et pas d’emprunt à “Agadir”
- Clients ayant un compte et nom de la ville où ils habitent
- Clients ayant un compte à “Paris-Etoile” et nom de la ville où ils habitent
- Clients ayant un compte dans une agence où “Ahmed” a un compte
- Agences ayant un actif plus élevé que toute agence d'“AAAA”
- Clients ayant un compte dans chaque agence d'“ AAAA ”
- Clients ayant un compte dans au-moins une agence d'“AAAA”
- Emprunteurs de l'agence “Grédit-Agadir” classés par ordre alphabétique
- Solde moyen des comptes-clients de chaque agence
- Solde moyen des comptes-clients des agences dont le solde moyen est > “10 000”
- Nombre de clients habitant “Safi”
- Nombre de clients de l'agence “ CETELEM ” n'ayant pas leur adresse dans la relation CLIENT
- Insérer le n-uplet dans la relation CLIENT
- Diminuer l'emprunt de tous les clients habitant “Tanger” de “5%”
- Fermer les comptes de “Ahmed”
- Supprimer de la relation AGENCE toutes les agences sans client
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
1. Liste des agences ayant des comptes-clients SELECT DISTINCT Nom FROM AGENCE, COMPTE WHERE AGENCE.Num_Agence = COMPTE.Num_Agence 2. Clients ayant un compte à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTE WHERE AGENCE.Num_Agence = COMPTE.Num_Agence AND CLIENT.Num_Client = COMPTE.Num_Client AND AGENCE.Ville = “Agadir” 3. Clients ayant un compte ou un emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND AGENCE.Num_Agence = COMPTE.Num_Agence AND AGENCE.Ville = “Agadir” UNION SELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNT WHERE CLIENT.Num_Client = EMPRUNT.Num_Client AND AGENCE.Num_Agence = EMPRUNT.Num_Agence AND AGENCE.Ville = “Agadir” 4. Clients ayant un compte et un emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND AGENCE.Num_Agence = COMPTE.Num_Agence AND AGENCE.Ville = “Agadir” intersect SELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNT WHERE CLIENT.Num_Client = EMPRUNT.Num_Client AND AGENCE.Num_Agence = EMPRUNT.Num_Agence AND AGENCE.Ville = “Agadir” 5. Clients ayant un compte et pas d’emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND AGENCE.Num_Agence = COMPTE.Num_Agence AND AGENCE.Ville = “Agadir” minus SELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNT WHERE CLIENT.Num_Client = EMPRUNT.Num_Client AND AGENCE.Num_Agence = EMPRUNT.Num_Agence AND AGENCE.Ville = “Agadir” 6. Clients ayant un compte et nom de la ville où ils habitent Première solution : SELECT Nom, Ville FROM CLIENT, COMPTE WHERE CLIENT.Num_Client = COMPTE. Num_Client Deuxième solution : SELECT Nom, Ville FROM CLIENT WHERE Num_Client IN ( SELECT Num_Client FROM COMPTE) 7. Clients ayant un compte à “ wafa-agadir ” et nom de la ville où ils habitent Première solution : SELECT CLIENT.Nom, CLIENT.Ville FROM CLIENT, AGENCE, COMPTE WHERE CLIENT.Num_Client = COMPTE. Num_Client AND AGENCE.Num_Agence = COMPTE.Num_Agence AND AGENCE.Nom = “ wafa-agadir ” Deuxième solution : SELECT Nom, Ville FROM CLIENT WHERE Num_Client IN ( SELECT Num_Client FROM COMPTE WHERE Num_Agence IN ( SELECT Num_Agence FROM AGENCE WHERE Nom = “wafa-agadir”)) 8. Clients ayant un compte dans une agence où “Ahmed” a un compte Première solution : SELECT Nom FROM CLIENT, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND Num_Agence IN ( SELECT Num_Agence FROM CLIENT, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND Nom = “Ahmed”) Deuxième solution : SELECT Nom FROM CLIENT WHERE Num_Client IN ( SELECT Num_Client FROM COMPTE WHERE Num_Agence IN ( SELECT Num_Agence FROM CLIENT, COMPTE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND Nom = “Ahmed”)) 9. Agences ayant un actif plus élevé que toute agence de "AAAA" SELECT Nom FROM AGENCE WHERE Actif > ALL ( SELECT Actif FROM AGENCE WHERE Ville = “AAAA”) 10. Clients ayant un compte dans chaque agence d“AAAA” 11. Clients ayant un compte dans au-moins une agence d“AAAA” Première solution : SELECT Nom FROM CLIENT WHERE Num_Client IN ( SELECT Num_Client FROM COMPTE WHERE Num_Agence IN ( SELECT Num_Agence FROM AGENCE WHERE Ville = “AAAA”)) Deuxième solution : SELECT CLIENT.Nom FROM CLIENT, COMPTE, AGENCE WHERE CLIENT.Num_Client = COMPTE.Num_Client AND COMPTE.Num_Agence = AGENCE.Num_Agence AND AGENCE.Ville = “AAAA” 12. Emprunteurs de l"'"agence “Grédit-Agadir” classés par ordre alphabétique SELECT Nom FROM CLIENT WHERE Num_Client IN ( SELECT Num_Client FROM EMPRUNT WHERE Num_Agence IN ( SELECT Num_Agence FROM AGENCE WHERE Nom = “Grédit-Agadir”)) ORDER BY Nom 13. Solde moyen des comptes-clients de chaque agence SELECT Nom, avg(Solde) FROM AGENCE, COMPTE WHERE AGENCE.Num_Agence = COMPTE.Num_Agence GROUP BY Nom 14. Solde moyen des comptes-clients des agences dont le solde moyen est > “10 000” SELECT Nom, avg(Solde) FROM AGENCE, COMPTE WHERE AGENCE.Num_Agence = COMPTE.Num_Agence GROUP BY Nom HAVING avg(Solde) > 10000 15. Nombre de clients habitant “ Safi ” SELECT count(*) FROM CLIENT WHERE Ville = “Safi” 16. Nombre de clients de l'agence “CETELEM ” n'ayant pas leur adresse dans la relation CLIENT Première solution : SELECT count(*) FROM CLIENT WHERE Ville = NULL AND Num_Client IN ( SELECT Num_Client FROM COMPTE WHERE Num_Agence IN ( SELECT Num_Agence FROM AGENCE WHERE Nom = “CETELEM ”)) Deuxième solution : SELECT count(*) FROM CLIENT, COMPTE, AGENCE WHERE Ville = NULL AND CLIENT.Num_Client = COMPTE.Num_Client AND COMPTE.Num_Agence = AGENCE.Num_Agence AND AGENCE.Nom = “CETELEM ” 17. Insérer le n-uplet < leila, Agadir > dans la relation CLIENT INSERT INTO CLIENT VALUES (130765, “leila”, “Agadir”) 18. Diminuer l"'"emprunt de tous les clients habitant “Tanger” de “5%” |