Vous êtes sur la page 1sur 4

TP SQL sous MYSQL

Supports en ligne :www.tuvalides.net


Soit la base de donnes Magazine : CLIENT (NumCli, Nom, Prnom, DateNaiss, Rue, CP, Ville) PRODUIT (NumProd, Desig, PU, #NumFour) FOURNISSEUR (NumFour, RaisonSoc) COMMANDE (#NumCli, #NumProd, DateC, Quantite) 1. Crez la base de donnes MAGAZINE CREATE DATABASE MAGAZINE Quelques commandes utiles 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. Crez les tables : Client, Fournisseur, Produit et Commande en respectant les conditions suivants : Prix unitaire ne doit pas dpasser 30000DH, La quantit commande doit tre suprieure zro. Table client 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) ); Table Produit CREATE TABLE PRODUIT ( NumProd INT, Desig VARCHAR(30), PU DOUBLE, NumFour INT Not NULL, CONSTRAINT PK_PRODUIT PRIMARY KEY (NumProd), CONSTRAINT FK_PRODUIT_NUMFOUR FOREIGN KEY (NumFour) Table Commande CREATE TABLE COMMANDE ( NumCli INT, NumProd INT, DateC DATE , Quantite INT NOT NULL, CONSTRAINT PK_COMMANDE PRIMARY KEY (NumCli, NumProd, DateC), CONSTRAINT Table Fournisseur CREATE TABLE Fournisseur( NumFour INT, RaisonSoc VARCHAR(30), CONSTRAINT PK_FOURNISSEUR PRIMARY KEY (NumFour) );

REFERENCES Fournisseur (NumFour), CONSTRAINT CK_PRODUIT_PU CHECK (PU<30000) );

FK_COMMANDE_NUMCLI FOREIGN KEY (NumCli) REFERENCES Client(NumCli), CONSTRAINT FK_COMMANDE_NUMPROD FOREIGN KEY (NumProd) REFERENCES Produit(NumProd), CONSTRAINT CK_COMMANDE_QTE CHECK (QTE>0) );

2. Supprimer toutes les tables de la base de donnes et les recrez une deuxime fois DROP TABLE Commande; DROP TABLE Produit; DROP TABLE Fournisseur; DROP TABLE Client; Afficher la description dune table DESC Commande ; A. Modification de la structure dune table et remplissage des tables 3. Ajouter lattribut Adr dans la table client ALTER TABLE CLIENT ADD(Adr VARCHAR(50)) ; 4. Supprimer lattribut Rue de la table client ALTER TABLE CLIENT DROP COLUMN Rue ; 5. Modifier le type de lattribut Adr VARCHAR(100) ALTER TABLE CLIENT MODIFY Adr VARCHAR(100) ; 6. Remplir les tables par les valeurs des tableaux en haut
Remplissage de la table CLIENT INSERT INTO CLIENT (NumCli, Nom, Prenom, DateNaiss, CP, Ville,adr) 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") ; Remplissage de la table FOURNISSEUR

INSERT INTO FOURNISSEUR VALUES (1,"SOS SALMI"); INSERT INTO FOURNISSEUR VALUES (2,"SOS INCONNU"); INSERT INTO FOURNISSEUR VALUES (3,"SOS MED ALI"); Remplissage de la table PRODUIT INSERT INTO PRODUIT VALUES (10, "PRO10",1100,1); INSERT INTO PRODUIT VALUES (20, "PRO20",2045.25,3); Remplissage de la table COMMANDE 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);

B. Manipulation de la table 7. Donnez la liste de tous les clients par ordre alphabtique inverse de nom. SELECT * FROM client ORDER BY nom DESC ; 8. 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 ; 9. Donnez les Noms et Prnoms de tous les clients (projection) SELECT Nom, Prenom FROM Client ; 10. Donnez la liste des Clients qui habitent Rabat, SELECT * FROM client WHERE ville=Rabat ; 11. Donnez les commandes en quantit au moins gale 3 SELECT * FROM Commande WHERE Quantite>=3; 12. 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; 13. Donnez les Commandes en quantit indtermine SELECT * FROM Commande WHERE Quantite IS NULL; 14. Donnez les Clients habitant une ville dont le nom se termine par AT SELECT * FROM client WHERE UPPER(Ville) LIKE %AT ; 15. Donnez les Prnoms des clients dont le nom est SAMI, SALAH ou ALI SELECT prenom FROM client WHERE UPPER (Nom) IN (SAMI, SALAH, ALI); 16. Donnez la Moyenne des prix unitaire des produits SELECT AVG (PU) FROM Produit;

17. Quel est Nombre total de commandes ? SELECT COUNT (NumCli) FROM Commande. 18. Quel est le Nombre de clients ayant pass commande ? SELECT COUNT (DISTINCT NumCli) FROM Commande; 19. Donnez la Liste des noms et prnoms des clients qui ont lanc des commandes. SELECT Nom, Prenom FROM Client, Commande WHERE Client.NumCli = Commande.NumCli; 20. 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; 21. Donnez la Liste des numros, noms et prnoms des clients qui ont command le 16-07-2011 SELECT cli.NumCli, Nom, Prenom FROM Client cli, Commande cmd WHERE Cli.NumCli = cmd.NumCli AND DateC = 2011-11-26; 22. 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); 23. Quantit totale commande par chaque client. SELECT NumCli, SUM(Quantite) FROM Commande GROUP BY NumCli; 24. Nombre de produits diffrents commands par chaque client SELECT NumCli, COUNT(DISTINCT NumProd) FROM Commande GROUP BY NumCli; 25. Nombre de produits diffrents commands par chaque client au moins de fvrier 2009 SELECT NumCli, COUNT(DISTINCT NumProd) FROM Commande WHERE DATEC >= 01-02-2009 AND DATEC <01-03-2009 GROUP BY NumCli; 26. 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;

tuvalides.net