Vous êtes sur la page 1sur 5

Correction de la série N° 1 : SQL

create table Usine (


CodeU number,
NomU varchar(20),
Ville varchar(20),
constraint PK_U primary key (CodeU)
);

create table Produit


(
CodeP number,
NomP varchar(20),
Couleur varchar(20),
Poids number,
constraint PK_P primary key (CodeP)
);

create table Fournisseur


(
CodeF number ,
NomF varchar(20),
Statut varchar(20),
Ville varchar(20),
constraint PK_F primary key (CodeF)
);

create table PUF


(
CodeP number,
CodeU number,
CodeF number,
Quantité number,
constraint PK_PUFF primary key (CodeP,CodeU,CodeF),
constraint FK_NP foreign key (CodeP) references Produit (CodeP),
constraint FK_NU foreign key (CodeU) references Usine (CodeU),
constraint FK_NF foreign key (CodeF) references Fournisseur (CodeF)
);
INSERT into Usine (CodeU, NomU, Ville) values (1, 'Usine1', ‘Tunis’) ;
INSERT into Usine (CodeU, NomU, Ville) values (2, ' Usine2', 'Tunis') ;
INSERT into Usine (CodeU, NomU, Ville) values (3, ' Usine3', 'Tunis') ;
INSERT into Usine (CodeU, NomU, Ville) values (4, ' Usine4', 'Bizerte') ;
INSERT into Usine (CodeU, NomU, Ville) values (5, ' Usine 5', 'Bizerte') ;

INSERT into Fournisseur values (1, 'Fournisseur1', 'Indépendant', 'Tunis') ;


INSERT into Fournisseur values (2, 'Fournisseur2 ', 'Grossiste', 'Tunis') ;
INSERT into Fournisseur values (3, 'Fournisseur3 ', 'Indépendant', 'Bizerte') ;
INSERT into Fournisseur values (4, 'Fournisseur4 ', 'Grossiste', 'Tunis') ;
INSERT into Fournisseur values (5, 'Fournisseur5 ', 'Indépendant', 'Tunis') ;
INSERT into Fournisseur values (6, 'Fournisseur6 ', 'Grossiste', 'Bizerte') ;
INSERT into Fournisseur values (7, 'Fournisseur7 ', 'Indépendant', 'Sfax') ;
INSERT into Fournisseur values (8, 'Fournisseur8 ', 'Grossiste', 'Sousse') ;
INSERT into Fournisseur values (9, 'Fournisseur9 ', 'Indépendant', 'Sousse') ;
INSERT into Fournisseur values (10, 'Fournisseur10 ', 'Grossiste', 'Sfax') ;

INSERT into Produit values (1, 'iPod', 'Rouge', 100) ;


INSERT into Produit values (2, 'iPod', 'Gris', 100) ;
INSERT into Produit values (3, 'iMac', 'Blanc',300) ;
INSERT into Produit values (4, 'MacBook','Blanc',200) ;
INSERT into Produit values (5, 'MacBook','Noir', 200) ;

INSERT into PUF values (1, 1, 1, 10) ;


INSERT into PUF values (1, 1, 2, 15) ;
INSERT into PUF values (5, 4, 3, 15) ;
INSERT into PUF values (5, 5, 3, 15) ;
INSERT into PUF values (5, 1, 3, 15) ;
INSERT into PUF values (5, 2, 3, 1) ;
INSERT into PUF values (5, 3, 3, 1) ;
INSERT into PUF values (2, 1, 4, 1) ;

1) Donner le numéro, le nom et la ville de toutes les usines.


select CodeU, NomU, Ville from Usine ;

2) Donner le numéro, le nom et la ville de toutes les usines de Bizerte.


select CodeU, NomU, Ville
from Usine
where Ville = ’Bizerte’ ;

3) Donner les numéros des fournisseurs qui approvisionnent l'usine n°1 en produit n°1.
select CodeF from PUF where CodeU = 1 and CodeP = 1 ;

4) Donner le nom et la couleur des produits livrés par le fournisseur n°1.


select distinct NomP, Couleur
from Produit, PUF
where PUF.CodeP = Produit.CodeP and PUF.CodeF = 1;

5) Donner les numéros des fournisseurs qui approvisionnent l'usine n°1 en un produit
rouge.
select distinct CodeF
from PUF, Produit P
where P.Couleur = ’Rouge’ and PUF.CodeU = 1 and PUF.CodeP = P.CodeP ;

6) Donner les noms des fournisseurs qui approvisionnent une usine de Bizerte ou de
Tunis en un produit rouge.
select distinct NomF
from PUF, Produit P, Fournisseur F, Usine U
where P.Couleur = ’Rouge’ and PUF.CodeP = P.CodeP
and PUF.CodeF = F.CodeF and PUF.CodeU = U.CodeU
and U.Ville in ('Tunis' , 'Bizerte');
Remarque : On peut utiliser cette instruction : U.Ville = ’Tunis’ or U.Ville = ’Bizerte’
7) Donner les numéros des produits livrés à une usine par un fournisseur de la même
ville.
select distinct CodeP
from PUF, Fournisseur F, Usine U
where PUF.CodeF = F.CodeF and PUF.CodeU = U.CodeU and U.Ville = F.Ville ;

8) Donner les numéros des produits livrés à une usine de Bizerte par un fournisseur de
Bizerte.
select distinct CodeP
from PUF, Fournisseur F, Usine U
where PUF.CodeF = F.CodeF and PUF.CodeU = U.CodeU
and F.Ville = ’Bizerte’ and U.Ville = ’Bizerte’;

9) Donner les numéros des usines qui ont au moins un fournisseur qui n'est pas de la
même ville.
select distinct PUF.CodeU
from PUF, Fournisseur F, Usine U
where PUF.CodeF = F.CodeF and PUF.CodeU = U.CodeU and U.Ville <> F.Ville ;

10)Donner les numéros des fournisseurs qui approvisionnent à la fois les usines n°1 et
n°2.
a)
select distinct first.CodeF
from PUF first, PUF second
where first.CodeF = second.CodeF and first.CodeU = 1 and second.CodeU = 2
b)
select distinct CodeF
from PUF
where CodeU = 2
and CodeF in (select CodeF from PUF where CodeU = 1)

11) Donner les numéros des usines qui utilisent au moins un produit disponible chez le
fournisseur n°3.
select distinct CodeU from PUF
where CodeP in( select CodeP from PUF where CodeF = 3 );

12) Donner le numéro du produit le plus léger (les numéros si plusieurs produits ont ce
même poids).
Select CodeP from Produit where Poids in (select min(Poids) as t from Produit)

13) Donner les numéros des usines qui ne reçoivent aucun produit rouge d'un fournisseur
de Bizerte.
select CodeU from Usine U
where CodeU not in(select CodeU from PUF, Produit P, Fournisseur F where
PUF.CodeP = P.CodeP and PUF.CodeF = F.CodeF and Couleur = ’Rouge’ and Ville =
’Bizerte’ );

14)Donner les numéros des produits qui sont livrés à toutes les usines de Bizerte.
select distinct P.CodeP from Produit P, PUF, Usine U
where P.CodeP = PUF.CodeP and PUF.CodeU = U.CodeU and U.Ville = ’Bizerte’
group by P.CodeP
having count(distinct PUF.CodeU)=
(select count(CodeU) from Usine where Ville = ’Bizerte’);

15) Donner les numéros des usines qui s'approvisionnent uniquement chez le fournisseur
n°3.
select CodeU
from Usine
where CodeU not in (select CodeU from PUF where CodeF <> 3)

16)Donner le nombre d'usines approvisionnées par le fournisseur n°1.


Select count(distinct CodeU) from PUF where CodeF =1;

17)Pour chaque produit livré à une usine, donner le numéro du produit, celui de l'usine et
la quantité totale qui a été livrée.
select CodeP, CodeU, sum(Quantite)
from PUF
group by CodeP, CodeU;

18)
Supprimer tous les produits de couleur noire et de numéro compris entre 100 et 199.
Delete from Produit where CodeP >= 100 and CodeP <= 199 and couleur = ’Noir’;
Delete from Produit where CodeP between 100 and 200 and couleur = 'Noir';

19)Changer la ville du fournisseur n°1 : il a déménagé pour Nabeul.


Update Fournisseur set Ville = 'Nabeul' where CodeF = 1

20)Changer le statut de tous les fournisseurs de Tunis et de Sousse pour « sous-traitant ».


update Fournisseur
set statut = ’sous-traitant’
where Ville = ’Tunis’ or Ville = ’Sousse’ ;

Vous aimerez peut-être aussi