Fiche de Révision
I. Structure de Base d'une Requête SQL
1. Ordre d'écriture standard
SELECT colonnes
FROM table
WHERE conditions
GROUP BY colonnes_de_groupement
HAVING conditions_sur_les_groupes
ORDER BY colonnes_de_tri;
2. Les clauses principales
- **SELECT** : Choisir les colonnes à afficher
- **FROM** : Spécifier la table source
- **WHERE** : Filtrer les lignes
- **GROUP BY** : Grouper les données
- **HAVING** : Filtrer les groupes
- **ORDER BY** : Trier les résultats
II. Requêtes de Base
1. Sélection simple
SELECT * FROM clients;
SELECT nom, prenom FROM employes;
2. Avec conditions (WHERE)
SELECT * FROM ventes WHERE montant > 1000;
SELECT * FROM produits WHERE categorie = 'Informatique';
3. Opérateurs de comparaison
- `=`, `<>` ou `!=` (différent)
- `>`, `<`, `>=`, `<=`
- `BETWEEN` (entre deux valeurs)
- `IN` (dans une liste)
- `LIKE` (recherche de motif)
III. Requêtes de Tri (ORDER BY)
1. Tri simple
SELECT * FROM produits ORDER BY prix;
SELECT * FROM clients ORDER BY nom ASC;
2. Tri multiple
SELECT * FROM ventes
ORDER BY date_vente DESC, montant ASC;
3. Directions de tri
- `ASC` : Croissant (par défaut)
- `DESC` : Décroissant
IV. Requêtes de Calcul
1. Fonctions d'agrégation
SELECT COUNT(*) FROM clients;
SELECT SUM(montant) FROM ventes;
SELECT AVG(prix) FROM produits;
SELECT MAX(salaire) FROM employes;
SELECT MIN(stock) FROM articles;
2. Calculs simples
SELECT nom, prix * 1.20 AS prix_ttc
FROM produits;
SELECT nom, salaire * 12 AS salaire_annuel
FROM employes;
V. Requêtes de Regroupement (GROUP BY)
1. Regroupement simple
SELECT categorie, COUNT(*)
FROM produits
GROUP BY categorie;
SELECT ville, AVG(salaire)
FROM employes
GROUP BY ville;
2. Avec condition HAVING
SELECT categorie, AVG(prix)
FROM produits
GROUP BY categorie
HAVING AVG(prix) > 50;
SELECT departement, COUNT(*)
FROM employes
GROUP BY departement
HAVING COUNT(*) > 5;
VI. Requêtes Spécifiques pour la Comptabilité
1. Jointures (pour relier les tables)
SELECT c.nom, v.montant, v.date_vente
FROM clients c
INNER JOIN ventes v ON c.id = v.client_id;
2. Requêtes sur les écritures comptables
SELECT compte, SUM(debit) AS total_debit, SUM(credit) AS total_credit
FROM ecritures
GROUP BY compte
HAVING SUM(debit) <> SUM(credit);
3. Calcul de soldes
SELECT compte,
SUM(debit) - SUM(credit) AS solde
FROM ecritures
GROUP BY compte;
VII. Bonnes Pratiques
- Toujours tester les requêtes sur un jeu d'essai
- Utiliser des alias pour les noms de colonnes calculées
- Commenter les requêtes complexes
- Vérifier les performances sur de grandes tables
VIII. Exemple Complet
SELECT
c.categorie,
COUNT(*) AS nombre_produits,
AVG(p.prix) AS prix_moyen,
SUM(p.stock) AS stock_total
FROM produits p
WHERE p.prix > 10
GROUP BY c.categorie
HAVING COUNT(*) > 2
ORDER BY prix_moyen DESC;