Vous êtes sur la page 1sur 4

TD 5: SQL POUR MYSQL

I. Création de la base de données UsineFabrication et ses insertions :


create database UsineFabrication;
use UsineFabrication;
create table Usine(NumU int(4) PRIMARY KEY, NomU VARCHAR(20), Ville VARCHAR(20));
insert into Usine values(1, 'Citroen', 'Paris');
insert into Usine values(2, 'Peugeot', 'Sochaux');
insert into Usine values(3, 'Citroen', 'Sochaux');

create table Produit(NumP int(4) PRIMARY KEY, NomP VARCHAR(20), Couleur VARCHAR(20),
Poids CHAR(10));
insert into Produit values(1, 'Plaquette', 'Noir', '257');
insert into Produit values(2, 'Siège', 'rouge', '15230');
insert into Produit values(3, 'Siège', 'vert', '15230');

create table Fournisseur(NumF int(4) PRIMARY KEY, NomF VARCHAR(20), Statut


VARCHAR(20), Ville VARCHAR(20));
insert into Fournisseur values(1, 'Montroe', 'Producteur', 'Lyon');
insert into Fournisseur values(2, 'Au bon siège', 'sous-traitant', 'Limoges');
insert into Fournisseur values(3, 'Saint Gobain', 'Producteur', 'Paris');

create table Livraison(NumP int(4), NumU int(4), NumF int(4), Quantité CHAR(10));
insert into Livraison values(3, 1, 2, '60');
insert into Livraison values(1, 2, 3, '2500');
insert into Livraison values(1, 3, 3, '3000');
insert into Livraison values(2, 2, 3, '120');
insert into Livraison values(3, 1, 1, '49');
insert into Livraison values(3, 2, 1, '45');
insert into Livraison values(3, 3, 1, '78');

ALTER TABLE Livraison


ADD CONSTRAINT fk_Livraison_NumP_Produit FOREIGN KEY (NumP) REFERENCES
Produit(NumP),
ADD CONSTRAINT fk_Livraison_NumU_Usine FOREIGN KEY (NumU) REFERENCES
Usine(NumU),
ADD CONSTRAINT fk_Livraison_NumF_Fournisseur FOREIGN KEY (NumF) REFERENCES
Fournisseur (NumF);
II. Expression des réquêtes SQL :
1. Liste des Usines :
Select distinct NomU from Usine;
2. Liste de nom des produits sans duplication :
select distinct NomP from Produit;
3. Liste des usines à Paris :
select NomU from Usine where Ville='Paris';
4. Liste de noms des fournisseurs qui approvisionnent l’usine nř2 :
select NomF from Fournisseur f,Livraison l
where f.NumF=l.Numf
And l.NumU=2;
5. Liste de noms des fournisseurs qui approvisionnent l’usine nř1 en produit nř3 :
select NomF from Fournisseur f,Livraison l
where f.NumF=l.NumF
And l.NumU=1
And l.NumP=3;
6. Liste des fournisseurs qui approvisionnent les usines de Paris et Sochaux :
select distinct NomF from Fournisseur f,Livraison l,Usine u
where l.Numf=f.Numf And l.NumU=u.NumU And u.ville in('Paris','Sochaux');
7. Liste des produits livrés à des usines par des fournisseurs habitants dans la même
ville :
select distinct NomP from produit,
Livraison l, Fournisseur f, Usine U
where l.Numf=f.Numf and l.NumU=u.NumU
And u.ville=f.ville;
8. Les fournisseurs qui approvisionnent à la fois l’usine nř1 et nř3 :
Select distinct NomF from Fournisseur f, Livraison l, usine u
where l.Numf=f.Numf and l.Numf in (select U.numu= 1 and 3);
9. Les numéros des usines qui ont au moins un fournisseur qui n’est pas de la même
ville :
select distinct l.NumU from livraison l, fournisseur f, Usine u
where l.Numf=f.Numf and l.NumU=u.NumU
and u.ville not in (select f.ville from fournisseur);
10. Les numéros de usines qui consomment les produits livrées par les fournisseurs 1
et 3 :
select distinct NumU from livraison l,fournisseur f
where l.numf=f.NumF
and l.NumF in (1,3);
11. Numéro des usines qui ne reçoivent aucun produit rouge des fournisseur de Paris :
Select NumU from Usine
where NumU
not in (select NumU from livraison l, Fournisseur f, produit p
where l.NumP=P.NumP
and l.NumF=f.NumF
and p.Couleur='rouge' and f.ville='paris');
12. Le numéro du produit le plus léger (ou les numéros des produits les plus légers:
Select NumP from produit
where poids in(select min(poids) from produit );
13. Les numéros des produits qui sont livrés à toutes les usines de Paris :
Select distinct NumP from Livraison l, usine U
where l.NumU=u.NumU
and u.ville in('paris');
14. Les numéros des fournisseurs qui approvisionnent toutes usines avec un même
produit :
Select NumF from fournisseur f
where exists (select Nump from Produit
where not exists (select NumU from Usine
where not exists (select * from livraison
where f.NumF=Livraison.Numf
and Usine.NumU=Livraison.NumU
and Produit.NumP=Livraison.NumP)));
15. Les numéros des usines qui s’approvisionnent uniquement chez le fournisseur 3 :
select NumU from livraison l
where NumF=3;
16. La quantité totale (numéro usine, quantité totale) des produits reçus par chaque
usine :
select numU,sum(quantite) from livraison group by NumU;
17. Donnez le couple (Numéro des usines , quantité totale) tels que la quantité total
est supérieur à 100 :
select NumU,quantité from livraison
where quantité>100;
18. Ajouter un nouveau fournisseur : « 45, Albert, sous-traitant, Saint-Etienne » :
insert into fournisseur values(45,'Albert','sous-traitant','Saint-Etienne');
19. Supprimer tous les produits de rouge noire et de numéro compris entre 10 et 20 :
delete from produit
where Couleur='rouge','noir'
and (NumP 10 20);
20. Changer la ville du fournisseur 1 : il a déménagé à Nice :
update fournisseur
set ville='Nice'
where numf=1;

Vous aimerez peut-être aussi