SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
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- Création des tables :
CREATE TABLE client (
num_cli NUMBER(5) PIMARY KEY,
nom VARCHAR2(30),
prenom VARCHAR2(30),
ville VARCHAR2(30)) ;
2- Création des tables :
CREATE TABLE article (
num_art NUMBER(5),
designation VARCHAR2(30),
prix NUMBER(10,2),
PIMARY KEY (num_art));
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));
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));
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);
…
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;
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;
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;
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';
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';
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’);
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;
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;
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;
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;
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);
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;
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%’;
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%’);
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%’;
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%');
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%');
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%');
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?

Contenu connexe

Plus de SamirAwad14

Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptxSamirAwad14
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptxSamirAwad14
 
Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptxSamirAwad14
 
controle donnee.pptx
controle donnee.pptxcontrole donnee.pptx
controle donnee.pptxSamirAwad14
 
controle donnee.pdf
controle donnee.pdfcontrole donnee.pdf
controle donnee.pdfSamirAwad14
 
gestion utilisateur.pdf
gestion utilisateur.pdfgestion utilisateur.pdf
gestion utilisateur.pdfSamirAwad14
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptxSamirAwad14
 
L'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxL'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxSamirAwad14
 
Système de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptxSystème de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptxSamirAwad14
 

Plus de SamirAwad14 (14)

Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptx
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptx
 
Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptx
 
controle donnee.pptx
controle donnee.pptxcontrole donnee.pptx
controle donnee.pptx
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
 
trigger.pdf
trigger.pdftrigger.pdf
trigger.pdf
 
controle donnee.pdf
controle donnee.pdfcontrole donnee.pdf
controle donnee.pdf
 
Transaction.pdf
Transaction.pdfTransaction.pdf
Transaction.pdf
 
replication.pdf
replication.pdfreplication.pdf
replication.pdf
 
gestion utilisateur.pdf
gestion utilisateur.pdfgestion utilisateur.pdf
gestion utilisateur.pdf
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptx
 
L'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxL'outil MDA acceleo.pptx
L'outil MDA acceleo.pptx
 
Système de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptxSystème de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptx
 

TD.pdf

  • 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- Création des tables : CREATE TABLE client ( num_cli NUMBER(5) PIMARY KEY, nom VARCHAR2(30), prenom VARCHAR2(30), ville VARCHAR2(30)) ;
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 ?