Vous êtes sur la page 1sur 2

Solution TP N°1 + suite de TP

Exercice 1 :
create table CLIENT(
NumCli NUMBER(5) CONSTRAINT PK_Client PRIMARY KEY,
Nom VARCHAR2(20),
Prenom VARCHAR2(20),
DateNaiss Date,
Rue VARCHAR2(20),
CP NUMBER(8),
Ville VARCHAR2(20));

create table FOURNISSEUR(


NumFour NUMBER(5) CONSTRAINT PK_Fournisseur PRIMARY KEY,
RaisonSoc Varchar2(30));

create table PRODUIT(


NumProd NUMBER(5) CONSTRAINT PK_Produit PRIMARY KEY,
Desig VARCHAR2(20),
PU NUMBER(8,2),
NumFour NUMBER(5) CONSTRAINT Ref_NumFour_Fournisseur REFERENCES Fournisseur) ;

///// version 2
create table PRODUIT(
NumProd NUMBER(5) CONSTRAINT PK_Produit PRIMARY KEY,
Desig VARCHAR2(20),
PU NUMBER(8,2),
NumFour NUMBER(5),
CONSTRAINT Ref_NumFour_Fournisseur FOREIGN KEY (NumFour) REFERENCES Fournisseur(NumFour)) ;
///////

create table COMMANDE(


NumCli NUMBER(5) CONSTRAINT Ref_NumCli_Client REFERENCES Client,
NumProd NUMBER(5)CONSTRAINT Ref_NumProd_Produit REFERENCES Produit,
DateC Date,
Quantité NUMBER(4),
CONSTRAINT PK_Commande PRIMARY KEY (NumCli , NumProd));

Alter table Commande add CONSTRAINT C_QUANTITÉ CHECK (QUANTITÉ> 0);


Alter table Produit add CONSTRAINT PU_Max CHECK (PU<= 30000);

insert into Client values(1,'Hilmi', 'Samir',TO_DATE('1984-02-12', 'YYYY-MM-DD'), 'Massera',100023, 'Rabat');


insert into Client values(2,'Alami', 'Kamel',TO_DATE('1988-12-14', 'YYYY-MM-DD'), NULL,100024, 'Rabat');
insert into Client values(3,'Saidi', 'Ali',NULL, 'Nasser',100025, 'Kénitra');
insert into Produit values(10,'Ordinateur HP I7', 5500, 1);
insert into Produit values(20,'Carte NVDIA GPU', 15500, 3);
insert into Fournisseur values(1,'SOS Computer');
insert into Fournisseur values(2,'Tel-surveillance')
insert into Fournisseur values(3,'Toush-Mag')
insert into commande VALUES (1,20,TO_DATE('2014-11-26, 'YYYY-MM-DD'), 3)
insert into commande VALUES (3,10,TO_DATE('2014-09-20', 'YYYY-MM-DD'), 6)
insert into commande VALUES (3,20,TO_DATE('2014-07-16', 'YYYY-MM-DD'), 4)
insert into commande VALUES (1,10,TO_DATE('2014-02-10, 'YYYY-MM-DD'), 2)
…..
Exercice 2

CREATE VIEW Client_Rabat


AS SELECT *
FROM client
WHERE VILLE = 'Rabat' ;
CREATE VIEW PRODUIT_1 (NP_1, NumFour_1, PrixUnit_1, Desig_1)
AS SELECT NUMPROD, NUMFOUR, PU, DESIG
FROM Produit
WHERE NumFour= (select NumFour from Fournisseur where RAISONSOC='SOS Computer');

select * from client where ville='Kénitra'


select * from commande where QUANTITÉ BETWEEN 3 and 6
select numcli from client where ville like 'K%'
update client set ville='Rabat' where PRÉNOM='Naciri' and nom='Mohammed'
delete from client where numcli=1

create view CLIENT_CMD ("NCLI", "NOMPRENOM", "ADR", "REFCMD", "MHT", "MTVA", "MTTC",
"DATEC") as
select client.numcli, nom||prenom, RUE||''||CP||''||VILLE, Commande.numprod,
commande.QUANTITÉ*Produit.pu,'20%' ,commande.QUANTITÉ*Produit.pu*1.2,commande.datec
from client, commande, produit
where client.numcli=commande.numcli and commande.numprod=produit.numprod

select * from client_cmd


where datec BETWEEN to_date('01/02/2014','DD/MM/YYYY') and
to_date('28/02/2014','DD/MM/YYYY')

Create view CLIENT_NBCMD (NCLI, NOM, PRENOM, ADR, NBRCMD) as


select client.numcli, nom, prenom, Rue||''||cp||''||ville, COUNT(*)
from client, commande
where client.numcli=commande.numcli
group by client.numcli, nom, prenom, Rue||''||cp||''||ville;

select * from client where numcli not in (select NCLI from CLIENT_NBCMD)

Suite de TP
Modifier la base de données commerce de tel sorte à gérer le cas où un client peut passer une commande
contenant plusieurs produits.
COMMANDE(Numcom : Numérique, Numcli : Numérique, Datecom : Date, Datelivrai : Date) ;
LIGNE_COMMANDE (Numprod : Numérique ,Numcom : Numérique ,Qtecom : Numérique ) ;
PRODUIT (Numprod : Numérique, Desig : Texte (50), PU : Numérique, NumFor :NumériqueQteStock :
Numérique) ;

Vous aimerez peut-être aussi