Exercice Langage SQL : " Banque "
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 1. Liste des agences ayant des comptes-clients SELECT DISTINCT Nom FROM AGENCE, COMPTEWHERE AGENCE.Num_Agence = COMPTE.Num_Agence 2. Clients ayant un compte à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTEWHERE AGENCE.Num_Agence = COMPTE.Num_AgenceAND CLIENT.Num_Client = COMPTE.Num_ClientAND AGENCE.Ville = “Agadir” 3. Clients ayant un compte ou un emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTEWHERE CLIENT.Num_Client = COMPTE.Num_ClientAND AGENCE.Num_Agence = COMPTE.Num_AgenceAND AGENCE.Ville = “Agadir”UNIONSELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNTWHERE CLIENT.Num_Client = EMPRUNT.Num_ClientAND AGENCE.Num_Agence = EMPRUNT.Num_AgenceAND AGENCE.Ville = “Agadir” 4. Clients ayant un compte et un emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTEWHERE CLIENT.Num_Client = COMPTE.Num_ClientAND AGENCE.Num_Agence = COMPTE.Num_AgenceAND AGENCE.Ville = “Agadir”intersectSELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNTWHERE CLIENT.Num_Client = EMPRUNT.Num_ClientAND AGENCE.Num_Agence = EMPRUNT.Num_AgenceAND AGENCE.Ville = “Agadir” 5. Clients ayant un compte et pas d’emprunt à “Agadir” SELECT CLIENT.Nom FROM CLIENT, AGENCE, COMPTEWHERE CLIENT.Num_Client = COMPTE.Num_ClientAND AGENCE.Num_Agence = COMPTE.Num_AgenceAND AGENCE.Ville = “Agadir”minusSELECT CLIENT.Nom FROM CLIENT, AGENCE, EMPRUNTWHERE CLIENT.Num_Client = EMPRUNT.Num_ClientAND AGENCE.Num_Agence = EMPRUNT.Num_AgenceAND AGENCE.Ville = “Agadir” 6. Clients ayant un compte et nom de la ville où ils habitent Première solution :SELECT Nom, Ville FROM CLIENT, COMPTEWHERE CLIENT.Num_Client = COMPTE. Num_ClientDeuxième solution :SELECT Nom, Ville FROM CLIENTWHERE 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, COMPTEWHERE CLIENT.Num_Client = COMPTE. Num_ClientAND AGENCE.Num_Agence = COMPTE.Num_AgenceAND AGENCE.Nom = “ wafa-agadir ” Deuxième solution : SELECT Nom, Ville FROM CLIENTWHERE 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, COMPTEWHERE CLIENT.Num_Client = COMPTE.Num_Client AND Num_Agence IN (SELECT Num_Agence FROM CLIENT, COMPTEWHERE 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, COMPTEWHERE 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, AGENCEWHERE CLIENT.Num_Client = COMPTE.Num_ClientAND COMPTE.Num_Agence = AGENCE.Num_AgenceAND 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, COMPTEWHERE AGENCE.Num_Agence = COMPTE.Num_AgenceGROUP BY Nom 14. Solde moyen des comptes-clients des agences dont le solde moyen est > “10 000” SELECT Nom, avg(Solde) FROM AGENCE, COMPTEWHERE AGENCE.Num_Agence = COMPTE.Num_AgenceGROUP BY NomHAVING 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, AGENCEWHERE Ville = NULLAND CLIENT.Num_Client = COMPTE.Num_ClientAND COMPTE.Num_Agence = AGENCE.Num_AgenceAND 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%” |