SQL SELECT : lire les données d'une table
SELECT est la première commande que tout le monde apprend en SQL, et celle que vous écrirez le plus souvent. Elle sert à lire des données : afficher le contenu d'une table, choisir quelques colonnes, calculer de nouvelles valeurs. Elle ne modifie jamais la base : vous pouvez l'essayer sans risque.
Dans ce cours, vous allez voir comment écrire une requête SELECT, comment choisir les colonnes à afficher, et pourquoi le fameux SELECT * est pratique… mais pas toujours une bonne idée.
Syntaxe
SELECT colonne1, colonne2, …
FROM nom_de_la_table;Comment ça marche
Une requête SELECT se lit presque comme une phrase : « sélectionne ces colonnes depuis cette table ».
SELECTindique les colonnes à afficher, séparées par des virgules. Elles apparaissent dans l'ordre où vous les écrivez.FROMindique la table où se trouvent ces colonnes.- L'étoile
*signifie « toutes les colonnes ».SELECT * FROM produitsaffiche donc la table entière. - Le point-virgule
;termine la requête. Il est indispensable quand on enchaîne plusieurs requêtes.
Le SQL ne tient pas compte des majuscules pour les mots-clés : select et SELECT fonctionnent de la même façon. L'usage est d'écrire les mots-clés en majuscules et les noms de tables et de colonnes en minuscules, pour que la requête se lise facilement.
Pourquoi éviter SELECT * dans une application ?
SELECT * est parfait pour explorer une table. Dans une vraie application, on liste plutôt les colonnes utiles : la requête transfère moins de données, et elle ne casse pas si quelqu'un ajoute ou réordonne des colonnes dans la table.
Schéma
| id | nom | categorie | prix |
|---|---|---|---|
| 1 | Clavier | Informatique | 49 |
| 2 | Plaid | Maison | 25 |
| 3 | Gourde | Sport | 12 |
| nom | prix |
|---|---|
| Clavier | 49 |
| Plaid | 25 |
| Gourde | 12 |
Schéma simplifié pour illustrer le principe. Les exemples ci-dessous utilisent la vraie base d'exercices de SQL Quest (une boutique en ligne fictive : voir le schéma complet).
Exemples avec leurs résultats
1. Afficher toute une table
L'étoile affiche toutes les colonnes de la table fournisseurs.
SELECT * FROM fournisseurs; Essayer dans le bac à sable| id | nom | pays |
|---|---|---|
| 1 | TechNova | France |
| 2 | ElectroPlus | Allemagne |
| 3 | MaisonDeco | France |
| 4 | SportZone | Espagne |
| 5 | BookWorld | Belgique |
| 6 | GreenFood | Italie |
| 7 | AsiaParts | Chine |
7 lignes au total
2. Choisir ses colonnes
On n'affiche que le nom et le prix de chaque produit, dans cet ordre.
SELECT nom, prix FROM produits; Essayer dans le bac à sable| nom | prix |
|---|---|
| Clavier mécanique | 15 |
| Souris sans fil | 103 |
| Écran 27" | 342 |
| Webcam HD | 101 |
| SSD 1To | 317 |
| Casque gaming | 98 |
| Hub USB-C | 49 |
| Lampe LED | 51,74 |
| Coussin | 10,86 |
| Plaid | 29,23 |
29 lignes au total · 10 affichées
3. Changer l'ordre des colonnes
L'ordre des colonnes dans le résultat suit l'ordre écrit après SELECT, pas celui de la table.
SELECT ville, nom, prenom FROM clients; Essayer dans le bac à sable| ville | nom | prenom |
|---|---|---|
| Lille | Dubois | Samir |
| Lille | Martin | Samir |
| Paris | Laurent | Zoé |
| Toulouse | Lefebvre | Rayan |
| Marseille | Laurent | Léa |
| Bordeaux | Michel | Louis |
| Casablanca | Dubois | Adam |
| Montréal | Lambert | Omar |
| Bordeaux | Faure | Zoé |
| Lyon | Faure | Alice |
120 lignes au total · 10 affichées
Les erreurs fréquentes
Oublier la virgule entre deux colonnes
Sans virgule, SQL comprend que le deuxième mot est un alias (un nouveau nom) de la première colonne. La requête ne plante pas : elle renvoie une seule colonne, ce qui est encore plus trompeur.
SELECT prenom nom FROM clients;SELECT prenom, nom FROM clients;Laisser une virgule avant FROM
Une virgule après la dernière colonne provoque une erreur de syntaxe.
SELECT prenom, nom, FROM clients;SELECT prenom, nom FROM clients;Se tromper de nom de table
Les noms doivent être exacts. Dans notre base, les tables sont au pluriel : clients, produits, commandes…
SELECT * FROM client;SELECT * FROM clients;Exercices
Essayez d'écrire la requête vous-même avant d'ouvrir la solution.
Défi 1. Affichez l'adresse e-mail et la ville de tous les clients.
Voir une solution
SELECT email, ville FROM clients;| ville | |
|---|---|
| samir.dubois1@mail.com | Lille |
| samir.martin2@mail.com | Lille |
| zoe.laurent3@mail.com | Paris |
| rayan.lefebvre4@mail.com | Toulouse |
| lea.laurent5@mail.com | Marseille |
| louis.michel6@mail.com | Bordeaux |
| adam.dubois7@mail.com | Casablanca |
| omar.lambert8@mail.com | Montréal |
120 lignes au total · 8 affichées
Essayer dans le bac à sableDéfi 2. Affichez le nom, le poste et le salaire de tous les employés.
Voir une solution
SELECT nom, poste, salaire FROM employes;| nom | poste | salaire |
|---|---|---|
| Dubois | PDG | 9 500 |
| Lefebvre | Directeur commercial | 6 200 |
| Roux | Directrice technique | 6 800 |
| Simon | Responsable RH | 4 800 |
| Simon | Commercial | 4 800 |
| Martin | Commercial | 3 400 |
| Moreau | Commercial | 4 600 |
| Lambert | Commercial | 4 200 |
25 lignes au total · 8 affichées
Essayer dans le bac à sableLes exercices interactifs sont corrigés automatiquement, avec un prof qui explique vos erreurs. Une leçon résumée reste affichée à côté de l'éditeur.
Questions fréquentes
SELECT modifie-t-il la base de données ?
Non. SELECT ne fait que lire les données. Pour modifier une table, on utilise INSERT, UPDATE ou DELETE.
Faut-il écrire SELECT en majuscules ?
Non, les mots-clés SQL ne sont pas sensibles à la casse. Les majuscules sont une convention qui rend les requêtes plus lisibles.
Le point-virgule est-il obligatoire ?
Pour une requête seule, la plupart des outils l'acceptent sans. Il devient indispensable dès que vous enchaînez plusieurs requêtes : prenez l'habitude de toujours le mettre.
Dans quel ordre s'affichent les lignes ?
Sans ORDER BY, l'ordre des lignes n'est pas garanti. Si l'ordre compte, ajoutez une clause ORDER BY (voir le cours dédié).