Vous êtes sur la page 1sur 5

****************

IAM BIG3
****************

TP N°1 : Rappel SQL sous Oracle

Exercice 1
Soit les tables suivantes
client(num_client, nom, prenom, ville, telephone)
num_client nom prenom ville telephone
1 TRAORE Issa Bamako 75 25 66 65
2 TOURE Adama Sikasso 45 88 61 55
3 KEITA Amadou Segou null
4 DIARRA Assetou Bamako 58 58 96 33

categorie(id, code, libelle)


Id Code libelle
1 ALI Alimentation
2 VET Vêtement
3 CHA Chaussure

produit(ref_prod, designation, prix, id_categorie)


Ref_prod Designation prix Id_categorie
1 Sucre 800 1
2 Riz 500 1
3 Huile 700 1
4 Chemise 5000 2

vente(num_client, ref_prod, date, quantité)


Num_client Ref_prod date quantite
3 2 10/08/2015 2
1 1 08/07/2016 7
4 2 08/09/2023 3
1 2 01/02/2022 1
1 3 01/07/2021 9
1. Créer la table client avec les contraintes suivantes :
a. num_client clé primaire,
b. nom et prénom non nul sur 50 caractères
c. téléphone doit être unique, nul possible
2. Créer la table categorie
a. id clé primaire,
b. code chaine de caractère longueur fixe 3 caractères, doit être unique
c. libelle chaine de caractères de longueur maximale 200 caractères
3. Créer la table produit avec les conditions suivantes
a. ref_prod clé primaire,
b. designation chaines de caractères de longueur maximale 200 caractères, non
nul
c. prix de type double, le prix doit être supérieur à 0 en utilisant check
4. Créer la table vente avec les conditions suivantes :

a. num_client et ref_prod : couplé clé primaire, et chaque champ clé étrangère


b. quantite double supérieur à 0
5. Créer une séquence avec le code suivant :
CREATE SEQUENCE client_sequence
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
6. Insérer les lignes ci-dessus dans les tables respectives. Lors de l’ajout des clients
utiliser la séquence créée ci-dessus, en utilisant client_sequence.NEXTVAL pour la
valeur de l’id.
7. Afficher le nom, le prénom, et la ville de tous les clients
8. Afficher le nom et le prénom des clients qui habitent à Sikasso
9. Afficher les achats effectués par le client numéro 02 le 10/11/2021
10. Afficher les clients qui n’habitent pas à Bamako
11. Afficher pour chaque vente, le num_client et le montant de la vente, sachant que le
montant est déterminé en fonction du prix du produit et la quantité vendue.
12. Pour chaque vente, afficher la référence du produit et le numéro du client
13. Afficher le nom et le téléphone des clients de Bamako
14. Afficher le nom et le prénom des clients ayant acheté du riz.
15. Afficher le nom des clients ayant acheté l’ensemble des produits
16. Afficher le nom des clients ayant effectué au moins un achat
17. Afficher pour le client numéro 1 : la date de la vente et la désignation des produits
achetés.
18. Afficher la désignation du produit le plus vendu en quantité.
19. Afficher la désignation du produit le plus vendu en termes de chiffre d’affaire.
20. Afficher le montant total vendu par catégorie, en faisant apparaitre l’ensemble des
catégories

Exercice 2
Soient les tables suivantes
Journal (code_j, titre, prix, type, periodicite)
Depot (no_depot, nom, adresse)
Livraison (no_depo#t, code_j#, date_liv, quantite)
Formuler les requêtes suivantes en SQL
1. Créer une base de données mes_journaux
2. Créer les différentes tables ci-dessus
3. Remplissez la base avec les clauses insert suivantes

INSERT INTO Journal (code_j, titre, prix, type, periodicite)


VALUES
(1, 'Le Monde', 2.5, 'Quotidien', 'Journalier'),
(2, 'National Geographic', 4.0, 'Magazine', 'Mensuel'),
(3, 'Science News', 3.0, 'Magazine', 'Hebdomadaire'),
(4, 'Time', 2.0, 'Magazine', 'Mensuel'),
(5, 'New York Times', 2.0, 'Quotidien', 'Journalier'),
(6, 'Nature', 5.0, 'Magazine', 'Mensuel'),
(7, 'Wall Street Journal', 3.0, 'Quotidien', 'Journalier'),
(8, 'Economist', 4.5, 'Magazine', 'Hebdomadaire'),
(9, 'Sports Illustrated', 2.5, 'Magazine', 'Mensuel'),
(10, 'Scientific American', 3.5, 'Magazine', 'Mensuel'),
(11, 'The Guardian', 2.0, 'Quotidien', 'Journalier'),
(12, 'Smithsonian', 3.0, 'Magazine', 'Mensuel'),
(13, 'Los Angeles Times', 2.0, 'Quotidien', 'Journalier'),
(14, 'Harvard Business Review', 4.5, 'Magazine', 'Mensuel'),
(15, 'The Atlantic', 3.0, 'Magazine', 'Mensuel'),
(16, 'New Scientist', 3.0, 'Magazine', 'Hebdomadaire'),
(17, 'USA Today', 2.0, 'Quotidien', 'Journalier'),
(18, 'Forbes', 3.0, 'Magazine', 'Mensuel'),
(19, 'Chicago Tribune', 2.0, 'Quotidien', 'Journalier'),
(20, 'Wired', 4.0, 'Magazine', 'Mensuel');

INSERT INTO Depot (no_depot, nom, adresse)


VALUES
(1, 'Dépôt A', '123 Rue de la Presse'),
(2, 'Dépôt B', '456 Avenue des Magazines'),
(3, 'Dépôt C', '789 Boulevard des Quotidiens'),
(4, 'Dépôt D', '101 Rue des Abonnements'),
(5, 'Dépôt E', '234 Avenue des Journaux'),
(6, 'Dépôt F', '567 Boulevard des Revues'),
(7, 'Dépôt G', '890 Rue des Publications'),
(8, 'Dépôt H', '111 Avenue des Périodiques'),
(9, 'Dépôt I', '222 Boulevard des Magazines'),
(10, 'Dépôt J', '333 Rue des Quotidiens'),
(11, 'Dépôt K', '444 Avenue de la Presse'),
(12, 'Dépôt L', '555 Boulevard des Journaux'),
(13, 'Dépôt M', '666 Rue des Abonnements'),
(14, 'Dépôt N', '777 Avenue des Revues'),
(15, 'Dépôt O', '888 Boulevard des Publications'),
(16, 'Dépôt P', '999 Rue des Périodiques'),
(17, 'Dépôt Q', '1234 Avenue des Magazines'),
(18, 'Dépôt R', '5678 Boulevard des Quotidiens'),
(19, 'Dépôt S', '9876 Rue de la Presse'),
(20, 'Dépôt T', '5432 Avenue des Journaux') ;
INSERT INTO Depot (no_depot, nom, adresse)
VALUES
(21, 'Bamako', '123 Rue de la Presse, Bamako'),
(22, 'Ségou', '456 Avenue des Magazines, Ségou'),
(23, 'Mopti', '789 Boulevard des Quotidiens, Mopti'),
(24, 'Gao', '101 Rue des Abonnements, Gao'),
(25, 'Kayes', '234 Avenue des Journaux, Kayes'),
(26, 'Sikasso', '567 Boulevard des Revues, Sikasso'),
(27, 'Bougouni', '890 Rue des Publications, Bougouni'),
(28, 'Koutiala', '111 Avenue des Périodiques, Koutiala'),
(29, 'Kidal', '222 Boulevard des Magazines, Kidal'),
(30, 'Nioro', '333 Rue des Quotidiens, Nioro');

INSERT INTO Livraison (no_depot, code_j, date_liv, quantite)


VALUES
(1, 1, '2023-11-01', 100),
(2, 1, '2023-11-01', 150),
(3, 1, '2023-11-02', 75),
(4, 2, '2023-11-03', 50),
(5, 2, '2023-11-04', 120),
(6, 2, '2023-11-05', 90),
(7, 3, '2023-11-01', 80),
(8, 3, '2023-11-02', 100),
(9, 3, '2023-11-03', 65),
(10, 4, '2023-11-01', 40),
(11, 4, '2023-11-04', 55),
(12, 4, '2023-11-06', 70),
(13, 5, '2023-11-01', 110),
(14, 5, '2023-11-03', 95),
(15, 5, '2023-11-05', 120),
(16, 6, '2023-11-01', 60),
(17, 6, '2023-11-02', 75),
(18, 6, '2023-11-04', 85),
(19, 7, '2023-11-01', 70),
(20, 7, '2023-11-03', 90);
INSERT INTO Livraison (no_depot, code_j, date_liv, quantite)
VALUES
(21, 1, '2023-11-01', 50),
(22, 2, '2023-11-01', 60),
(23, 3, '2023-11-02', 40),
(24, 4, '2023-11-03', 30),
(25, 5, '2023-11-01', 70),
(26, 6, '2023-11-02', 55),
(27, 7, '2023-11-03', 45),
(28, 8, '2023-11-04', 60),
(29, 9, '2023-11-05', 35),
(30, 10, '2023-11-01', 40);

Formuler les requêtes suivantes en SQL


4. Quel est le prix des journaux ?
5. Donnez tous les renseignements connus sur les hebdomadaires.
6. Donnez les noms des journaux livrés à Bamako
7. Sélectionnez tous les journaux dont le prix est inférieur à 10 euros.
8. Trouvez le nom et l'adresse de tous les dépôts.
9. Sélectionnez tous les dépôts situés à une adresse spécifique, par exemple,
"Bamako".
10. Trouvez le nom et la quantité de journaux livrés à chaque dépôt.
11. Sélectionnez les journaux qui ont été livrés plus de 5 fois.
12. Trouvez les dépôts qui n'ont pas encore reçu de livraisons.
13. Trouvez les journaux de type "Quotidien".
14. Trouvez le total des quantités de tous les journaux livrés à chaque dépôt.
15. Trouvez les journaux qui ont été livrés le 1er janvier 2023.

Vous aimerez peut-être aussi