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 ?