Successfully reported this slideshow.
Your SlideShare is downloading. ×

TD.pdf

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
srep_cours_04.pdf
srep_cours_04.pdf
Loading in …3
×

Check these out next

1 of 30 Ad

More Related Content

Recently uploaded (20)

Advertisement

TD.pdf

  1. 1. Exercice : 1- Le schéma relationnel : COMMANDE (num_cmd, date_cmd, num_cli) CLIENT (num_cli, nom, prenom, ville) LIGNE_CMD (num_cmd, num_art, qte) ARTICLE (num_art, designation, prix)
  2. 2. 2- Création des tables : CREATE TABLE client ( num_cli NUMBER(5) PIMARY KEY, nom VARCHAR2(30), prenom VARCHAR2(30), ville VARCHAR2(30)) ;
  3. 3. 2- Création des tables : CREATE TABLE article ( num_art NUMBER(5), designation VARCHAR2(30), prix NUMBER(10,2), PIMARY KEY (num_art));
  4. 4. 2- Création des tables : CREATE TABLE commande ( num_cmd NUMBER(5), date_cmd DATE, num_cli NUMBER(5) REFERENCES client(num_cli), CONSTRAINT PK_cmd PIMARY KEY (num_cmd));
  5. 5. 2- Création des tables : CREATE TABLE ligne_cmd ( num_cmd NUMBER(5), num_art NUMBER(5), qte NUMBER(10,2), CONSTRAINT PK_ligne PIMARY KEY (num_cmd,num_art), CONSTRAINT FK_cmd FOREIGN KEY (num_cmd) REFERENCES commande(num_cmd), FOREIGN KEY (num_art) REFERENCES article(num_art));
  6. 6. 3- Insertion des tuples : INSERT INTO client (num_cli, nom, prenom, ville) VALUES (1,'SAIDI','Ahmed','saida'); INSERT INTO client VALUES (2,'TABTI','Mohammed','Alger'); … INSERT INTO article (num_art, designation, prix) VALUES (1,'PC portable Toshiba',75000); INSERT INTO article VALUES (2,'PC portable SONY',85000.00); … INSERT INTO commande (num_cmd, date_cmd, num_cli) VALUES (1,'2014/01/01',1); INSERT INTO commande VALUES (2,'2014/01/01',5); … INSERT INTO Ligne_cmd (num_cmd, num_art, qte) VALUES (1,1,1); INSERT INTO Ligne_cmd VALUES (1,8,1); …
  7. 7. 4- Sélection des tuples: 1- Afficher tous les clients ? SELECT * FROM client; SELECT num_cli, nom, prenom, ville FROM client; SELECT client.* FROM client; 2- Afficher tous les articles ? SELECT num_art, designation, prix FROM article; SELECT * FROM article; 3- Les noms et prénoms des clients ? SELECT nom, prenom FROM client;
  8. 8. 4- Sélection des tuples: 4- Les noms des clients ? SELECT DISTINCT nom FROM client; 5- La liste des clients par ordre alphabétique des noms ? SELECT nom, prenom FROM client ORDER BY nom; 6- La liste des clients par ordre alphabétique des noms puis les prénoms ? SELECT nom, prenom FROM client ORDER BY nom, prenom;
  9. 9. 4- Sélection des tuples: 7- La liste des articles par ordre descendant des prix ? SELECT * FROM article ORDER BY prix DESC; 8- Le nom et prénom du client n° 3 ? SELECT nom, prenom FROM client WHERE num_cli=3; 9- Le nom et prénom des clients n°3 et n°5 ? SELECT nom, prenom FROM client WHERE num_cli=3 OR num_cli=5;
  10. 10. 4- Sélection des tuples: 10- Afficher le nom et prénom des clients n°3, n°5, n°6 et n°8 ? SELECT nom, prenom FROM client WHERE num_cli IN (3, 5, 6, 8); 11- Les clients de la ville de Saida ? SELECT * FROM client WHERE ville='saida'; SELECT * FROM client WHERE ville LIKE 'saida'; 12- Les clients qui ne sont pas de SBA ? SELECT * FROM client WHERE ville<>'sba'; SELECT * FROM client WHERE ville != 'sba';
  11. 11. 4- Sélection des tuples: 13- Les clients dont la ville commence par 's' ? SELECT * FROM client WHERE UPPER(ville) LIKE ‘S%'; SELECT * FROM client WHERE LOWER(ville) LIKE ‘s%'; 14- Les clients dont le nom ne commence pas par 'm' ? SELECT * FROM client WHERE LOWER(nom) NOT LIKE 'm%'; 15- Les clients dont le nom se termine par 'i' ? SELECT * FROM client WHERE LOWER(nom) LIKE '%i';
  12. 12. 4- Sélection des tuples: 16- Les clients dont le nom ne se termine pas par 'i' ? SELECT * FROM client WHERE LOWER(nom) NOT LIKE '%i'; 17- Les clients qui sont de Saida ou de Mascara ? SELECT * FROM client WHERE lower(ville)='saida' OR lower(ville) =’mascara’; SELECT * FROM client WHERE lower(ville) IN ('saida',’mascara’); 18- Les clients qui ne sont ni d'Alger ni d'Oran ? SELECT * FROM client WHERE lower(ville)<>'alger' AND lower(ville)!=’oran’; SELECT * FROM client WHERE lower(ville) NOT IN ('alger',’oran’);
  13. 13. 4- Sélection des tuples: 19- Les articles que leur prix dépasse 50000 ? SELECT * FROM article WHERE prix>50000; 20- Le client qui a fait la commande n°2 ? SELECT C.num_cli, nom, prenom, ville FROM client C, commande M WHERE C.num_cli= M.num_cli AND num_cmd=2; SELECT num_cli, nom, prenom, ville FROM client NATURAL JOIN commande WHERE num_cmd=2; SELECT C.* FROM client C, commande M WHERE C.num_cli= M.num_cli AND num_cmd=2;
  14. 14. 4- Sélection des tuples: 21- Les articles du bon de commande n°1 (numéro de l'article, désignation, son prix et la quantité commandée) ? SELECT article.*, qte FROM article A, ligne_cmd L WHERE num_cmd=1 AND A.num_art=L.num_art; SELECT num_art, designation, prix, qte FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=1; 22- Les clients qui ont fait une commande ? SELECT DISTINCT C.* FROM client C, commande M WHERE C.num_cli=M.num_cli; SELECT DISTINCT num_cli, nom, preom, ville FROM client NATURAL JOIN commande;
  15. 15. 4- Sélection des tuples: 23- Les articles commandés ? SELECT DISTINCT A.* FROM article A, ligne_cmd L WHERE A.num_art=L.num_art; SELECT DISTINCT num_art, designation, prix FROM article NATURAL JOIN ligne_cmd;
  16. 16. 4- Sélection des tuples: 24- Total des quantités commandés par article ? SELECT A.num_art, designation, SUM(qte) FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY A.num_art, designation; SELECT num_art, designation, SUM(qte) FROM article A NATURAL JOIN ligne_cmd GROUP BY num_art, designation;
  17. 17. 4- Sélection des tuples: 25- Calculer les montants des articles du bon de commande n°7 ? SELECT A.num_art, designation, prix, qte, qte*prix montant FROM article A, ligne_cmd L WHERE A.num_art=L.num_art AND L.num_cmd=7; SELECT num_art, designation, prix, qte, qte*prix montant FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=7; 26- Les clients qui n'ont passé aucune commande ? SELECT * FROM client WHERE num_cli NOT IN (SELECT num_cli FROM commande);
  18. 18. 4- Sélection des tuples: 27- Les articles dont les quantités commandés est plus que 2 ? SELECT A.num_art, designation, SUM(qte) as total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY A.num_art , designation HAVING SUM(qte)>2; SELECT num_art, designation, SUM(qte) as total FROM article NATURAL JOIN ligne_cmd GROUP BY A.num_art , designation HAVING SUM(qte)>2;
  19. 19. 4- Sélection des tuples: 28- Les clients qui ont acheté une souris ? SELECT DISTINCT C.* FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE ’souris%’; SELECT DISTINCT num_cli, nom, prenom, ville FROM client NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’souris%’;
  20. 20. 4- Sélection des tuples: 29- Les clients qui n’ont pas acheté de clavier ? SELECT * FROM client WHERE num_cli NOT IN (SELECT C.num_cli FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE ’clavier%’); SELECT * FROM client WHERE num_cli NOT IN (SELECT num_cli FROM client NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’clavier%’);
  21. 21. 4- Sélection des tuples: 30- Les clients qui ont acheté un clavier ou une souris ? SELECT DISTINCT C.num_cli, nom, prenom, ville FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND (LOWER(designation) LIKE ’souris%’ OR LOWER(designation) LIKE ‘clavier%’); SELECT DISTINCT num_cli, nom, prenom, ville FROM client C NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’souris%’ OR LOWER(designation) LIKE ‘clavier%’;
  22. 22. 31- Les clients qui ont acheté un clavier et une souris ? SELECT DISTINCT C.* FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE 'souris%‘ AND C.num_cli IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE 'clavier%‘); SELECT DISTINCT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%' AND num_cli IN (SELECT num_cli FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%');
  23. 23. 31- Les clients qui ont acheté un clavier et une souris ? SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%‘ INTERSECT SELECT num_cli, nom, prenom, ville FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%');
  24. 24. 32- Les clients qui ont acheté un clavier et jamais une souris ? SELECT C.num_cli, nom, prenom, ville FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'souris%'); SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT num_cli FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%');
  25. 25. SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%‘ MINUS SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%’; 32- Les clients qui ont acheté un clavier et jamais une souris ?
  26. 26. SELECT C.* FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) NOT LIKE 'clavier%'); SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND num_cli NOT IN (SELECT num_cli FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) NOT LIKE 'clavier%'); 33- Les clients qui ont acheté uniquement le produit clavier ?
  27. 27. SELECT count(num_art) nbre_article FROM ligne_cmd WHERE num_cmd=5; SELECT count(*) FROM ligne_cmd WHERE num_cmd=5; 34- Combien d’article il y a dans le bon de commande n°5 ? SELECT num_cmd, COUNT(num_art) FROM ligne_cmd GROUP BY num_cmd; SELECT num_cmd, COUNT(*) FROM ligne_cmd GROUP BY num_cmd; 35- Combien d’article y-a-il dans chaque bon de commande ?
  28. 28. SELECT count(distinct num_cli) FROM commande M, article A, ligne_cmd L WHERE M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE ’imprimante%’; SELECT count(distinct num_cli) FROM commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE lower(designation) LIKE ’imprimante%’; 36- Combien de client ont acheté une imprimante ? SELECT COUNT(DISTINCT num_art) FROM commande M, ligne_cmd L WHERE M.num_cmd=L.num_cmd AND M.num_cli=6; SELECT COUNT(DISTINCT num_art) FROM commande NATURAL JOIN ligne_cmd WHERE num_cli=6; 37- Combien de produit différent a acheté le client n°6 ?
  29. 29. SELECT SUM(qte*prix) Total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art AND num_cmd=7; SELECT SUM(qte*prix) Total FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=7; 38- Donner le total du bon de commande n°7 ? SELECT num_cmd, SUM(qte*prix) Total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY num_cmd; SELECT num_cmd, SUM(qte*prix) Total FROM article NATURAL JOIN ligne_cmd GROUP BY num_cmd; 39- Donner le total pour chaque bon de commande ?
  30. 30. SELECT SUM(qte*prix) Total FROM article A, commande M, ligne_cmd L WHERE A.num_art=L.num_art AND M.num_cmd=L.num_cmd AND num_cli=6; SELECT SUM(qte*prix) Total FROM article NATURAL JOIN commande NATURAL JOIN ligne_cmd WHERE num_cli=6; 40- Donner le total des achats du client n°6 ? SELECT num_cli, SUM(qte*prix) Total FROM article A, commande M, ligne_cmd L WHERE A.num_art=L.num_art AND M.num_cmd=L.num_cmd GROUP BY num_cli; SELECT num_cli, SUM(qte*prix) Total FROM article NATURAL JOIN commande NATURAL JOIN ligne_cmd GROUP BY num_cli; 41- Donner le total des achats par clients ?

×