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 :

  1. Liste des agences ayant des comptes-clients
  2. Clients ayant un compte à “Agadir”
  3. Clients ayant un compte ou un emprunt à “Agadir”
  4. Clients ayant un compte et un emprunt à “Agadir”
  5. Clients ayant un compte et pas d’emprunt à “Agadir”
  6. Clients ayant un compte et nom de la ville où ils habitent
  7. Clients ayant un compte à “Paris-Etoile” et nom de la ville où ils habitent
  8. Clients ayant un compte dans une agence où “Ahmed” a un compte
  9. Agences ayant un actif plus élevé que toute agence d'“AAAA”
  10. Clients ayant un compte dans chaque agence d'“ AAAA ”
  11. Clients ayant un compte dans au-moins une agence d'“AAAA”
  12. Emprunteurs de l'agence “Grédit-Agadir” classés par ordre alphabétique
  13. Solde moyen des comptes-clients de chaque agence
  14. Solde moyen des comptes-clients des agences dont le solde moyen est > “10 000”
  15. Nombre de clients habitant “Safi”
  16. Nombre de clients de l'agence “ CETELEM ” n'ayant pas leur adresse dans la relation CLIENT
  17. Insérer le n-uplet dans la relation CLIENT
  18. Diminuer l'emprunt de tous les clients habitant “Tanger” de “5%”
  19. Fermer les comptes de “Ahmed”
  20. Supprimer de la relation AGENCE toutes les agences sans client
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571. 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%”
Article publié le 12 Décembre 2011