La banque-Base de donnee

Ennoncé :

Soit le schéma de base de donnée relationnel suivant d'une Banque:
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 à“La Rochelle”

Clients ayant un compte ou un emprunt à“La Rochelle”

Clients ayant un compte ou un emprunt à“La Rochelle”

Clients ayant un compte et pas d’emprunt à“La Rochelle”

CORRECTIONS :

 
 Ecrire les requêtes suivantes en SQL :
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 à“La Rochelle”
select CLIENT.Nom
from CLIENT, AGENCE, COMPTE
 where AGENCE.Num_Agence = COMPTE.Num_Agence
 and CLIENT.Num_Client = COMPTE.Num_Client
 and AGENCE.Ville = “La Rochelle”

3. Clients ayant un compte ou un emprunt à“La Rochelle”
select CLIENT.Nom
from CLIENT, AGENCE, COMPTE
 where CLIENT.Num_Client = COMPTE.Num_Client
 and AGENCE.Num_Agence = COMPTE.Num_Agence
 and AGENCE.Ville = “La Rochelle”
 

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 = “La Rochelle”


4. Clients ayant un compte et un emprunt à“La Rochelle”
select CLIENT.Nom
from CLIENT, AGENCE, COMPTE
where CLIENT.Num_Client = COMPTE.Num_Client
and AGENCE.Num_Agence = COMPTE.Num_Agence
and AGENCE.Ville = “La Rochelle”


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 = “La Rochelle”


5. Clients ayant un compte et pas d’emprunt à“La Rochelle”
select CLIENT.Nom
from CLIENT, AGENCE, COMPTE
where CLIENT.Num_Client = COMPTE.Num_Client
and AGENCE.Num_Agence = COMPTE.Num_Agence
and AGENCE.Ville = “La Rochelle”
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 = “La Rochelle”
 
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 à“Paris-Etoile” 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 = “Paris-Etoile”
 
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 = “Paris-Etoile”))
8. Clients ayant un compte dans une agence où “Claude” 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 = “Claude”)
 
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 = “Claude”))
9. Agences ayant un actif plus élevé que toute agence d'“Orsay”
select
 Nom
from
 AGENCE
where
 Actif >
all
 (
 
select
 Actif
from
 AGENCE
where
 Ville = “Orsay”)
10. Clients ayant un compte dans chaque agence d'“Orsay”11. Clients ayant un compte dans au-moins une agence d'“Orsay”
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 = “Orsay”))
 
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 = “Orsay”
12. Emprunteurs de l'agence “Paris-Rambuteau” 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 = “Paris-Rambuteau”))
 
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 “Paris”
select
 
count
(*)
from
 CLIENT
where
 Ville = “Paris”
16. Nombre de clients de l'agence “Paris-Bastille” 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 = “Paris-Bastille”))
 
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 = “Paris-Bastille”
17. Insérer le n-uplet <Martin, Paris> dans la relation CLIENT
insert into
 CLIENT
values
 (130765, “Martin”, “Paris”)
18. Diminuer l'emprunt de tous les clients habitant “Marseille” de “5%”
update
EMPRUNT
set
 Montant = Montant * 0.95
 
where
 Num_Client in (
 
select
 Num_Client
from
 CLIENT
where
 Ville = “Marseille”)
19. Fermer les comptes de “Dupont”
Première solution :
 
delete
 
from
 COMPTE
where
 Num_Client
in
 (
 
select
 Num_Client
from
 CLIENT
where
 Nom = “Dupont”)
 
Deuxième solution :
 
delete
 
from
 COMPTE
 
where
 COMPTE.Num_Client
=
 CLIENT.Num_Client
 
and
 CLIENT.Nom = “Dupont”)
20. Supprimer de la relation AGENCE toutes les agences sans client
delete
 
from
 AGENCE
where
 Num_Client
not in
 (
select
 Num_Client
from
 COMPTE
where
 COMPTE.Num_Agence = AGENCE.Num_Agence)
and
Num_Client
not in
 (
select
 Num_Client
from
EMPRUNT
where
EMPRUNT.Num_Agence = AGENCE.Num_Agence)

 

 

 

  • 1 vote. Moyenne 5 sur 5.

Commentaires

  • TSAFACK

    1 TSAFACK Le 25/01/2021

    Waouh Merci
  • Ngouadjeu

    2 Ngouadjeu Le 25/01/2021

    Bonjour

Ajouter un commentaire

Anti-spam