Vous êtes sur la page 1sur 15

Soit la base Magazine suivante: CLIENT (NumCli, Nom, Prnom, DateNaiss, Rue, CP, Ville) PRODUIT (NumProd, Desig,

g, PU, #NumFour) FOURNISSEUR (NumFour, RaisonSoc) COMMANDE (#NumCli, #NumProd, DateC, Quantite)
1.

Crez la base de donnes MAGAZINE


CREATE DATABASE MAGAZINE2;

2.

Crez les tables : Client, Fournisseur, Produit et Commande en respectant les conditions suivants :
1. 2. Prix unitaire ne doit pas dpasser 30000DH, La quantit commande doit tre suprieure zro.

3.

Supprimer toutes les tables de la base de donnes et les recrez une deuxime fois

Table Client

Table Fournisseur

CREATE TABLE CLIENT ( NumCli INT, Nom VARCHAR(30), PRENOM VARCHAR(30), DateNaiss DATE, Rue VARCHAR(100), CP INT, Ville VARCHAR(40),
CONSTRAINT PK_CLIENT PRIMARY KEY (NumCli) );

CREATE TABLE Fournisseur( NumFour INT, RaisonSoc VARCHAR(30),


CONSTRAINT PK_FOURNISSEUR PRIMARY KEY (NumFour) );

Table Produit CREATE TABLE PRODUIT ( NumProd INT, Desig VARCHAR(30), PU DOUBLE, NumFour INT Not NULL,

Table Commande CREATE TABLE COMMANDE ( NumCli INT, NumProd INT, DateC DATE , Quantite INT NOT NULL,

CONSTRAINT PK_PRODUIT PRIMARY KEY (NumProd), CONSTRAINT FK_PRODUIT_NUMFOUR FOREIGN KEY (NumFour) REFERENCES Fournisseur (NumFour), CONSTRAINT CK_PRODUIT_PU CHECK (PU<30000) );

CONSTRAINT PK_COMMANDE PRIMARY KEY (NumCli, NumProd, DateC), CONSTRAINT FK_COMMANDE_NUMCLI FOREIGN KEY (NumCli) REFERENCES Client(NumCli), CONSTRAINT FK_COMMANDE_NUMPROD FOREIGN KEY (NumProd) REFERENCES Produit(NumProd), CONSTRAINT CK_COMMANDE_QTE CHECK (Quantite>0) );

Show databases : fait la liste des bases de donns sur le serveur MySQL Use base: indique MySQL le nom de la base de donnes par dfaut Show tables : fait la liste des tables sur une base donne Desc table : fait la liste des colonnes d'une table et les types des colonnes.

1.

Ajouter lattribut Adr dans la table client ALTER TABLE CLIENT ADD(Adr VARCHAR(50)) ;

2.

Supprimer lattribut Rue de la table client ALTER TABLE CLIENT DROP COLUMN Rue ;

3.

Modifier le type de lattribut Adr VARCHAR(100) ALTER TABLE CLIENT MODIFY Adr VARCHAR(100) ;

NumCli 1 2 3

Nom Salmi Imalla Skfalli

Prnom Sami Kamel Ali

DateNaiss 1944- 02-12 1944-12-14

CP 100023 100024 100025

Ville Rabat Rabat Rabat

adr Rue 17

Rue 28

INSERT INTO CLIENT VALUES (1, "SALMI","SAMI","1944-02-12", 100023, "Rabat","Rue 17") ; INSERT INTO CLIENT (NumCli, Nom, Prenom, DateNaiss,CP, Ville) VALUES (2, "IMALLA","KAMEL", "1944-12-14",100024,"Rabat") ; INSERT INTO CLIENT (NumCli, Nom, Prenom, CP, Ville,adr) VALUES (3, "Skfali","Ali",100025,"Rabat","Rue 28") ;

NumFour 1 2 3

RaisonSoc SOS SALMI SOS INCONNU SOS MED ALI

INSERT INTO FOURNISSEUR VALUES (1,"SOS SALMI");


INSERT INTO FOURNISSEUR VALUES (2,"SOS INCONNU");

INSERT INTO FOURNISSEUR VALUES (3,"SOS MED ALI");

NumProd 10 20

Design PRO10 PRO20

PU 1100 2045,25

NumFour 1 3

INSERT INTO PRODUIT VALUES (10, "PRO10",1100,1); INSERT INTO PRODUIT VALUES (20, "PRO20",2045.25,3);

NumCli 1 3 3 1

NumProd 10 20 10 20

DateC 2011-02-12 2011-07-16 2011-09-20 2011-11-26

Quantite 2 4 6 3

INSERT INTO COMMANDE VALUES (1,10,"2011-02-12",2); INSERT INTO COMMANDE VALUES (3,20,"2011-07-16",4); INSERT INTO COMMANDE VALUES (3,10,"2011-09-20",6); INSERT INTO COMMANDE VALUES (1,20,"2011-11-26",3);

1.

Donnez la liste de tous les clients par ordre alphabtique inverse de nom.

SELECT * FROM client ORDER BY nom DESC ;


2.

Calculez le prix TTC de tous les produits sachant que le TVA = 20%. SELECT PU+PU*1.8 FROM produit; Ou SELECT PU+PU*1.8 AS Prix_TTC FROM produit ; Donnez les Noms et Prnoms de tous les clients (projection) SELECT Nom, Prenom FROM Client ; Donnez la liste des Clients qui habitent Rabat, SELECT * FROM client WHERE ville=Rabat ;

3.

4.

5.

Donnez les commandes en quantit au moins gale 3 SELECT * FROM Commande WHERE Quantite>=3;

6.

Donnez les Produits dont le prix unitaire est compris entre 2000 ,00 DH
et 2500,00 DH SELECT * FROM produit WHERE PU BETWEEN 2000 AND 2500;

7.

Donnez les Commandes en quantit indtermine SELECT * FROM Commande WHERE Quantite IS NULL;

8.

Donnez les Clients habitant une ville dont le nom se termine par AT SELECT * FROM client WHERE UPPER(Ville) LIKE %AT; Donnez les Prnoms des clients dont le nom est SAMI, SALAH ou ALI SELECT prenom FROM client WHERE UPPER (Nom) IN (SAMI, SALAH, ALI);

9.

10.

Donnez la Moyenne des prix unitaire des produits SELECT AVG (PU) FROM Produit;

11.

Quel est Nombre total de commandes ?


SELECT COUNT (*) FROM commande; ou SELECT COUNT(NumCli) FROM Commande;

12.

Quel est le Nombre de clients ayant pass commande ? SELECT COUNT(DISTINCT NumCli) FROM Commande; Donnez la Liste des noms et prnoms des clients qui ont lanc des

13.

commandes.
SELECT Nom, Prenom FROM Client, Commande WHERE Client.NumCli = Commande.NumCli;

14.

Donnez la Liste des numros, noms et prnoms des clients qui ont lanc des commandes SELECT cli.NumCli, Nom, Prenom From Client cli, commande cmd WHERE Cli.NumCli=cmd.NumCli; Donnez la Liste des numros, noms et prnoms des clients qui ont command le 26-11-2011

15.

SELECT Cli.NumCli, Nom, Prenom FROM Client Cli, Commande Cmd WHERE Cli.NumCli = Cmd.NumCli AND DateC = '2011-11-26';
16.

Donnez la Liste des clients qui ont pass au moins une commande SELECT * FROM Client cli WHERE EXISTS (SELECT * FROM Commande cmd WHERE Cmd.NumCli = cli.NumCli);

16.

Quantit totale commande par chaque client. SELECT NumCli, SUM(Quantite)

FROM Commande
GROUP BY NumCli;
17.

Nombre de produits diffrents commands par chaque client SELECT NumCli, COUNT(DISTINCT NumProd)

FROM Commande
GROUP BY NumCli;
18.

Numro des produits qui soit, ont un prix infrieur 2000 DH, soit ont t commands par client N2.

SELECT NumProd FROM Produit WHERE PU<2000


UNION SELECT NumProd FROM Commande WHERE NumCli=2;