0% ont trouvé ce document utile (0 vote)
32 vues3 pages

Syntaxes SQL pour Gestion de Commandes

Ce document contient des exemples d'instructions SQL pour effectuer diverses opérations sur des tables comme mettre à jour, insérer, supprimer des données, faire des jointures et des agrégations. Il présente également des exercices avec leurs solutions pour appliquer et s'entraîner à ces instructions.

Transféré par

Roland Kagbo
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)
32 vues3 pages

Syntaxes SQL pour Gestion de Commandes

Ce document contient des exemples d'instructions SQL pour effectuer diverses opérations sur des tables comme mettre à jour, insérer, supprimer des données, faire des jointures et des agrégations. Il présente également des exercices avec leurs solutions pour appliquer et s'entraîner à ces instructions.

Transféré par

Roland Kagbo
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

QUELQUES SYNTHAXES SQL

Exemple
UPDATE ARTICLE
UPDATE TABLE
SET PUARTICLE = 8
SET [Attribut]= …. UPDATE ARTICLE
WHERE [Condition] SET PUART = PUART*8
DELETE FROM [TABLE] ‘Supprime tous les Articles’
WHERE [Condition] DELETE FROM ARTICLE
‘supprime tous les prospects dont le nom se
termine par la lettre 'd'.
DELETE FROM T_PROSPECT
WHERE PRP_PRENOM LIK'%d'
INSERT INTO [TABLE] ([Attribut1, ‘Supprime tous les Articles
Attributs2,…]) INSERT INTO ARTICLE (NumART,PUART)
VALUES (Valeur 1, Valeur2, …)
VALUES (123,25000)

Exercice SQL

1- Obtenir l’utilisateur ayant le prénom “Muriel” et le mot de passe “test11”, sachant que
l’encodage du mot de passe est effectué avec l’algorithme Sha1.
SELECT *
FROM `client`
WHERE `prenom` = 'Muriel'
AND `password` = SHA1("test11")

2- Obtenir la liste de tous les produits qui sont présent sur plusieurs commandes.
SELECT nom, COUNT(*) AS nbr_items
FROM `commande_ligne`
GROUP BY nom
HAVING nbr_items > 1
ORDER BY nbr_items DESC

3- Obtenir la liste de tous les produits qui sont présent sur plusieurs commandes et y ajouter
une colonne qui liste les identifiants des commandes associées.
SELECT nom, COUNT(*) AS nbr_items , GROUP_CONCAT(`commande_id`) AS
liste_commandes
FROM `commande_ligne`
GROUP BY nom
HAVING nbr_items > 1
ORDER BY nbr_items DESC

4- Enregistrer le prix total à l’intérieur de chaque ligne des commandes, en fonction du prix
unitaire et de la quantité
UPDATE `commande_ligne`
SET `prix_total` = (`quantite` * `prix_unitaire`)

5- Obtenir le montant total pour chaque commande et y voir facilement la date associée à
cette commande ainsi que le prénom et nom du client associé
SELECT [Link], [Link], commande.date_achat, commande_id,
SUM(prix_total) AS prix_commande
FROM `commande_ligne`
LEFT JOIN commande ON [Link] = commande_ligne.commande_id
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY `commande_id`

6- (difficulté très haute) Enregistrer le montant total de chaque commande dans le champ
intitulé “cache_prix_total”
UPDATE commande AS t1
INNER JOIN
( SELECT commande_id, SUM(commande_ligne.prix_total) AS p_total
FROM commande_ligne
GROUP BY commande_id ) t2
ON [Link] = t2.commande_id
SET t1.cache_prix_total = t2.p_total

7- Obtenir le montant global de toutes les commandes, pour chaque mois


SELECT YEAR(`date_achat`), MONTH(`date_achat`), SUM(`cache_prix_total`)
FROM `commande`
GROUP BY YEAR(`date_achat`), MONTH(`date_achat`)
ORDER BY YEAR(`date_achat`), MONTH(`date_achat`)

8- Obtenir le montant global de toutes les commandes, pour chaque mois


SELECT [Link], [Link], SUM(commande.cache_prix_total) AS
client_montant
FROM `commande`
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY commande.client_id
ORDER BY client_montant DESC
LIMIT 10

9- Obtenir le montant total des commandes pour chaque date


SELECT `date_achat`, SUM(`cache_prix_total`)
FROM `commande`
GROUP BY `date_achat`

10- Ajouter une colonne intitulée “category” à la table contenant les commandes. Cette
colonne contiendra une valeur numérique
ALTER TABLE `commande` ADD `category` TINYINT UNSIGNED NOT NULL AFTER
`cache_prix_total`;

11- Enregistrer la valeur de la catégorie, en suivant les règles suivantes :


a. “1” pour les commandes de moins de 200€
b. “2” pour les commandes entre 200€ et 500€
c. “3” pour les commandes entre 500€ et 1.000€
d. “4” pour les commandes supérieures à 1.000€
UPDATE `commande`
SET `category` = (
CASE
WHEN cache_prix_total<200 THEN 1
WHEN cache_prix_total<500 THEN 2
WHEN cache_prix_total<1000 THEN 3
ELSE 4
END )

12- Créer une table intitulée “commande_category” qui contiendra le descriptif de ces
catégories
CREATE TABLE `commande_category` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`nom` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

13- Insérer les 4 descriptifs de chaque catégorie au sein de la table précédemment créée

INSERT INTO `commande_category` (`id`, `nom`) VALUES (1, 'commandes de


moins de 200€');
INSERT INTO `commande_category` (`id`, `nom`) VALUES (2, 'commandes entre
200€ et 500€');
INSERT INTO `commande_category` (`id`, `nom`) VALUES (3, 'commandes entre
500€ et 1.000€');
INSERT INTO `commande_category` (`id`, `nom`) VALUES (4, 'commandes
supérieures à 1.000€');

14- Supprimer toutes les commandes (et les lignes des commandes) inférieur au 1er février
2019. Cela doit être effectué en 2 requêtes maximum
DELETE FROM `commande_ligne`
WHERE `commande_id` IN ( SELECT id FROM commande WHERE date_achat < '2019-
02-01' );
DELETE FROM `commande` WHERE date_achat < '2019-02-01';

Vous aimerez peut-être aussi