Guide SQL – Requêtes essentielles avec explications
SELECT – Bases
SELECT * FROM clients;
→ Récupère toutes les colonnes et toutes les lignes de la table.
SELECT nom, prenom FROM clients;
→ Récupère uniquement les colonnes nom et prenom.
SELECT DISTINCT ville FROM clients;
→ Affiche chaque ville une seule fois (suppression des doublons).
WHERE – Filtrage
SELECT * FROM clients WHERE age > 30;
→ Clients de plus de 30 ans.
SELECT * FROM clients WHERE ville = 'Casablanca';
→ Clients vivant à Casablanca.
SELECT * FROM clients WHERE age BETWEEN 25 AND 40;
→ Âges compris entre 25 et 40 inclus.
SELECT * FROM clients WHERE nom LIKE 'A%';
→ Noms commençant par A.
ORDER BY & LIMIT
SELECT * FROM clients ORDER BY age DESC;
→ Tri par âge décroissant.
SELECT * FROM clients LIMIT 10;
→ Affiche seulement 10 lignes.
SELECT * FROM clients ORDER BY date_creation DESC LIMIT 5;
→ Les 5 clients les plus récents.
Fonctions d’agrégation
SELECT COUNT(*) FROM clients;
→ Nombre total de clients.
SELECT AVG(age) FROM clients;
→ Âge moyen.
SELECT SUM(solde) FROM comptes;
→ Somme totale des soldes.
GROUP BY / HAVING
SELECT ville, COUNT(*) FROM clients GROUP BY ville;
→ Nombre de clients par ville.
SELECT ville, COUNT(*) FROM clients GROUP BY ville HAVING COUNT(*) > 10;
→ Villes ayant plus de 10 clients.
JOINTURES
SELECT [Link], [Link]
FROM clients c
JOIN comptes co ON c.id_client = co.id_client;
→ Clients ayant un compte.
SELECT [Link], [Link]
FROM clients c
LEFT JOIN comptes co ON c.id_client = co.id_client;
→ Tous les clients, même sans compte.
Sous-requêtes
SELECT * FROM clients
WHERE id_client IN (
SELECT id_client FROM comptes WHERE solde > 10000
);
→ Clients avec au moins un compte > 10 000.
SELECT * FROM comptes
WHERE solde > (SELECT AVG(solde) FROM comptes);
→ Comptes au-dessus de la moyenne.
INSERT / UPDATE / DELETE
INSERT INTO clients (nom, prenom, ville)
VALUES ('Benali', 'Omar', 'Tanger');
→ Ajout d’un client.
UPDATE clients SET ville='Rabat' WHERE id_client=3;
→ Modification ciblée.
DELETE FROM clients WHERE id_client=10;
→ Suppression d’un client précis.
CASE WHEN
SELECT nom,
CASE
WHEN solde < 0 THEN 'Débiteur'
WHEN solde BETWEEN 0 AND 5000 THEN 'Standard'
ELSE 'Premium'
END AS categorie
FROM comptes;
→ Classification des clients selon le solde.
Dates & Banque
SELECT CURRENT_DATE;
→ Date du jour.
SELECT * FROM reclamations
WHERE date_reclamation >= CURRENT_DATE - INTERVAL '7 day';
→ Réclamations des 7 derniers jours.
SELECT statut, COUNT(*) FROM reclamations GROUP BY statut;
→ Suivi des réclamations par statut.