0% ont trouvé ce document utile (0 vote)
36 vues7 pages

TP SQL

Le document présente un script SQL pour la gestion d'une base de données de commandes, incluant la création de tables pour les clients, commandes, produits et lignes de commandes. Il contient également des instructions d'insertion de données et des requêtes pour extraire des informations spécifiques, telles que les clients d'une ville donnée ou les commandes avec des quantités supérieures à un certain seuil. Enfin, il propose des statistiques sur les commandes et le nombre de clients par ville.

Transféré par

hajarud.49
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues7 pages

TP SQL

Le document présente un script SQL pour la gestion d'une base de données de commandes, incluant la création de tables pour les clients, commandes, produits et lignes de commandes. Il contient également des instructions d'insertion de données et des requêtes pour extraire des informations spécifiques, telles que les clients d'une ville donnée ou les commandes avec des quantités supérieures à un certain seuil. Enfin, il propose des statistiques sur les commandes et le nombre de clients par ville.

Transféré par

hajarud.49
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP4 : SQL

1/
USE BD_gestion_des_commandes;
-- Table Client
CREATE TABLE Client (
Cin VARCHAR(10) PRIMARY KEY,
Nom VARCHAR(50),
Prenom VARCHAR(50),
Ville VARCHAR(50),
Catg VARCHAR(2)
);

-- Table Commandes
CREATE TABLE Commandes (
Num_cmd INT PRIMARY KEY,
Cin VARCHAR(10),
Date DATE,
FOREIGN KEY (Cin) REFERENCES Client(Cin)
);

-- Table Produits
CREATE TABLE Produits (
Ref VARCHAR(10) PRIMARY KEY,
Desg VARCHAR(50),
Pu DECIMAL(10,2)
);

-- Table Lignes
CREATE TABLE Lignes (
Num_cmd INT,
Ref VARCHAR(10),
Quantite INT,
PRIMARY KEY (Num_cmd, Ref),
FOREIGN KEY (Num_cmd) REFERENCES Commandes(Num_cmd),
FOREIGN KEY (Ref) REFERENCES Produits(Ref)
);
2/
INSERT INTO Client VALUES
('A100', 'Amani', 'Mohamed', 'Casablanca', 'C1'),
('B200', 'Sellami', 'Amine', 'Rabat', 'C1'),
('C300', 'Asmour', 'Jalil', 'Agadir', 'C3'),
('D400', 'Tounsi', 'Mostafa', 'Casablanca', 'C2'),
('E500', 'Kalami', 'Samira', 'Fes', 'C3'),
('F600', 'Alami', 'Sanaa', 'Casablanca', 'C2'),
('G700', 'Mounir', 'Hamid', 'Casablanca', 'C1'),
('H800', 'amine', 'soufiane', 'rabat', 'C2');

INSERT INTO Commandes VALUES


(1, 'A100', '2004-01-01'),
(2, 'A100', '2004-02-01'),
(3, 'A100', '2004-03-01'),
(4, 'B200', '2004-04-15'),
(5, 'B200', '2004-05-15'),
(6, 'B200', '2004-06-15'),
(7, 'C300', '2004-07-10'),
(8, 'C300', '2004-09-25'),
(9, 'D400', '2004-10-10'),
(10, 'E500', '2004-10-25'),
(11, 'F600', '2004-11-11'),
(12, 'F600', '2004-12-12'),
(13, 'G700', '2004-12-15'),
(14, 'H800', '2004-12-25');

INSERT INTO Produits VALUES


('PRD01', 'Claviers', 250),
('PRD02', 'Ecrans', 700),
('PRD03', 'Souris', 100),
('PRD04', 'Haut-parleurs', 100),
('PRD05', 'Imprimantes', 1200);

INSERT INTO Lignes VALUES


(1, 'PRD01', 10),
(1, 'PRD02', 2),
(2, 'PRD02', 5),
(2, 'PRD03', 20),
(3, 'PRD04', 30),
(4, 'PRD04', 15),
(5, 'PRD04', 20),
(6, 'PRD05', 10),
(7, 'PRD05', 20),
(8, 'PRD01', 5),
(9, 'PRD01', 5),
(10, 'PRD01', 1),
(11, 'PRD02', 3),
(11, 'PRD04', 2),
(12, 'PRD03', 25),
(12, 'PRD05', 10),
(13, 'PRD05', 5),
(14, 'PRD03', 6);

3/
-- a. Clients de Casablanca et Rabat
SELECT * FROM Client
WHERE LOWER(Ville) IN ('casablanca', 'rabat');

-- b. Commandes avec quantité > 25


SELECT * FROM Lignes
WHERE Quantite > 25;

-- c. Lignes de commandes PRD03 avec quantité >= 20


SELECT * FROM Lignes
WHERE Ref = 'PRD03' AND Quantite >= 20;

-- d. Clients dont le nom commence par A


SELECT * FROM Client
WHERE Nom LIKE 'A%';

-- e. Liste triée des clients de Casablanca


SELECT * FROM Client
WHERE LOWER(Ville) IN ('casa', 'casablanca')
ORDER BY Nom DESC;

-- f. Clients avec conditions spécifiques


SELECT Cin, Nom, Prenom, Ville
FROM Client
WHERE Nom LIKE 'S%'
AND Prenom LIKE '%M%'
AND LOWER(Ville) IN ('casa', 'rabat');

-- g. Commandes de mars, mai ou juin 2008


SELECT Num_cmd, Date
FROM Commandes
WHERE YEAR(Date) = 2008
AND MONTH(Date) IN (3, 5, 6);

-- h. Clients de Casablanca avec commandes avant 2009


SELECT DISTINCT [Link], [Link]
FROM Client c
JOIN Commandes cmd ON [Link] = [Link]
WHERE LOWER([Link]) = 'casablanca'
AND YEAR([Link]) < 2009;

-- i. Clients C1 avec commandes > 20


SELECT DISTINCT [Link], [Link], [Link]
FROM Client c
JOIN Commandes cmd ON [Link] = [Link]
JOIN Lignes l ON cmd.Num_cmd = l.Num_cmd
WHERE [Link] = 'C1' AND [Link] > 20;

-- j. Clients de Casablanca avec produits > 240 DHS


SELECT DISTINCT [Link], [Link]
FROM Client c
JOIN Commandes cmd ON [Link] = [Link]
JOIN Lignes l ON cmd.Num_cmd = l.Num_cmd
JOIN Produits p ON [Link] = [Link]
WHERE LOWER([Link]) = 'casablanca' AND [Link] > 240;

-- k. Nombre total de clients


SELECT COUNT(*) as NombreClients
FROM Client;

-- l. Nombre de clients par ville


SELECT Ville, COUNT(*) as NombreClients
FROM Client
GROUP BY Ville;

-- m. Statistiques des commandes de décembre


SELECT
l.Num_cmd,
AVG([Link]) as MoyenneQuantite,
MAX([Link]) as QuantiteMax,
MIN([Link]) as QuantiteMin
FROM Lignes l
JOIN Commandes c ON l.Num_cmd = c.Num_cmd
WHERE MONTH([Link]) = 12
GROUP BY l.Num_cmd;

-- n. Montants des commandes avec TVA


SELECT
c.Num_cmd,
[Link],
SUM([Link] * [Link]) as MontantHT,
SUM([Link] * [Link] * 0.20) as TVA,
SUM([Link] * [Link] * 1.20) as MontantTTC
FROM Commandes c
JOIN Lignes l ON c.Num_cmd = l.Num_cmd
JOIN Produits p ON [Link] = [Link]
GROUP BY c.Num_cmd, [Link];

Vous aimerez peut-être aussi