En bref
Les bases du SQL tiennent en huit briques, toutes illustrées ici sur un même fil rouge : la base d’une petite boutique, avec sa table clients (nom, ville, date d’inscription) et sa table commandes (client, montant, date). Au menu : SELECT pour choisir les colonnes, WHERE pour filtrer les lignes (égalité, comparaisons, LIKE pour les motifs), ORDER BY pour trier et LIMIT pour tronquer, les fonctions d’agrégat (COUNT, SUM, AVG) qui résument des colonnes entières, GROUP BY qui calcule par catégorie, la jointure qui croise les deux tables par leur colonne commune, et enfin l’écriture — INSERT, UPDATE, DELETE — avec la règle d’or qui protège des catastrophes : toujours un WHERE, et un SELECT de vérification avant toute modification. Chaque requête se lit presque en français : c’est la grande élégance du SQL.
Le SQL a un charme que peu de langages possèdent : ses requêtes se lisent presque comme des phrases. Ce guide des bases du SQL les parcourt sur un cas fil rouge — la base d’une petite boutique — pour que chaque notion réponde à une vraie question métier. C’est le compagnon de la première étape de notre guide complet pour apprendre le SQL ; ouvre un outil comme DB Browser for SQLite et joue chaque requête au fil de la lecture.
Lire les données : SELECT, WHERE, ORDER BY
Pose le décor : une table clients (id, nom, ville, date_inscription) et une table commandes (id, client_id, montant, date_commande). Toute question commence par SELECT : SELECT nom, ville FROM clients; renvoie ces deux colonnes pour toutes les lignes — l’étoile (SELECT *) demandant tout, pratique pour explorer, à éviter dans du code définitif. Ta première requête est déjà utile : tu viens de lister ta clientèle.
Le filtrage arrive avec WHERE, qui garde les lignes vérifiant une condition : WHERE ville = ‘Lyon’, WHERE montant > 100, WHERE date_inscription >= ‘2026-01-01’ — les conditions se combinent avec AND et OR, exactement l’esprit des conditions que tu connais peut-être déjà, appliqué à des lignes de table. Pour les recherches approximatives, LIKE et son joker % trouvent les motifs : WHERE nom LIKE ‘Mar%’ attrape Marie, Marc et Martin. Reste à ordonner le résultat : ORDER BY montant DESC trie du plus grand au plus petit, et LIMIT 5 ne garde que le podium élargi — « les 5 plus grosses commandes », en une ligne qui se lit à voix haute. Avec ces quatre mots-clés, tu réponds déjà à la moitié des questions qu’on pose à une base.
Compter et regrouper : agrégats et GROUP BY
Deuxième famille : les requêtes qui résument au lieu de lister. Les fonctions d’agrégat compressent une colonne entière en un chiffre : COUNT(*) compte les lignes (« combien de clients ? »), SUM(montant) additionne (« chiffre d’affaires total ? »), AVG(montant) moyenne (« panier moyen ? »), MIN et MAX bornent. Combinées au WHERE, elles ciblent : SELECT COUNT(*) FROM commandes WHERE montant > 100; — le nombre de grosses commandes, instantanément, quelle que soit la taille de la table.
Le vrai pouvoir arrive avec GROUP BY, qui calcule l’agrégat par catégorie : SELECT ville, COUNT(*) FROM clients GROUP BY ville; dresse le tableau des effectifs par ville — une ligne de résultat par groupe. C’est littéralement le moteur de tous les tableaux de bord : ventes par mois, inscriptions par ville, panier moyen par client. Ajoute HAVING pour filtrer les groupes eux-mêmes (les villes d’au moins dix clients) — WHERE filtre les lignes avant regroupement, HAVING filtre les groupes après : la nuance classique des débuts, qui devient un réflexe en trois requêtes. Entraîne chaque variante sur nos 10 exercices de SQL : la série d’enquête sur la boutique y prolonge exactement ce fil rouge.
Relier et modifier : jointures et écriture prudente
Voici le palier qui donne son nom au « relationnel » : la jointure. Nos commandes ne stockent qu’un client_id — pour afficher le nom du client à côté de chaque montant, on croise les deux tables par leur colonne commune : SELECT clients.nom, commandes.montant FROM commandes JOIN clients ON commandes.client_id = clients.id; La logique tient en une image : la jointure recolle deux tables le long de leur couture. C’est LA compétence qui distingue un utilisateur occasionnel d’un vrai praticien SQL — et elle s’apprivoise en quelques jours de pratique délibérée, jusqu’aux variantes comme la jointure externe qui révèle « les clients sans commande », grande classique des entretiens.
Reste l’écriture, où le SQL exige de la discipline. INSERT INTO clients (nom, ville) VALUES (‘Sami’, ‘Lyon’); ajoute une ligne ; UPDATE clients SET ville = ‘Paris’ WHERE id = 3; modifie ; DELETE FROM commandes WHERE id = 12; supprime. La règle d’or, à graver avant tout le reste : jamais d’UPDATE ni de DELETE sans WHERE — sans lui, la modification s’applique à toutes les lignes, et l’histoire de la table effacée par accident est le bizutage le plus célèbre du métier. Le rituel du professionnel prudent : d’abord un SELECT avec le même WHERE pour voir exactement ce qui sera touché, puis la modification. Ton socle est complet — huit briques qui se branchent immédiatement sur tes projets, du livre d’or PHP qui persiste enfin au script Python qui archive ses résultats, jusqu’à la future API REST qui servira ces données au monde.
Deux compléments pour ancrer le tout. Garde le vocabulaire à portée — requête, clause, agrégat, jointure : nommer précisément les choses aide à chercher efficacement dans la documentation. Et prolonge l’entraînement sur les sites d’exercices gratuits, qui fournissent des bases toutes prêtes où tes huit briques peuvent tourner à plein régime dès ce soir.
Questions fréquentes
Quelles sont les bases du SQL à apprendre en premier ?
Dans l’ordre : SELECT pour choisir les colonnes, WHERE pour filtrer (avec AND, OR et LIKE), ORDER BY et LIMIT pour trier et tronquer, les agrégats COUNT/SUM/AVG, GROUP BY pour les calculs par catégorie, la jointure pour croiser deux tables, puis INSERT, UPDATE et DELETE pour écrire — toujours avec un WHERE.
À quoi sert une jointure en SQL ?
À croiser deux tables par leur colonne commune pour lire ensemble des informations réparties : afficher le nom du client à côté de chaque commande, par exemple, alors que la table commandes ne stocke que son identifiant. C’est le mécanisme central des bases relationnelles.
Quelle différence entre WHERE et HAVING ?
WHERE filtre les lignes avant tout regroupement ; HAVING filtre les groupes produits par GROUP BY, typiquement sur un agrégat : « les villes comptant au moins dix clients » se filtre avec HAVING COUNT(*) >= 10, car la condition porte sur le résultat du comptage, pas sur une ligne.
Comment éviter de supprimer ou modifier des données par erreur ?
Deux réflexes : ne jamais écrire UPDATE ou DELETE sans clause WHERE, et vérifier d’abord la cible en exécutant un SELECT avec exactement le même WHERE — tu vois les lignes concernées avant de les toucher. Sur une base d’entraînement, provoque l’erreur une fois : la leçon reste à vie.
Sources
- SQLite — documentation officielle du SQL le plus accessible
- PostgreSQL — la référence des bases relationnelles open source
Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.

