Question 1Que signifie * dans SELECT * FROM user; ?
SELECT — extraire des données d'une table
Apprends l'instruction SQL SELECT depuis les bases. Couvre la sélection de toutes les colonnes ou de colonnes précises, l'alias AS, le filtrage de lignes avec WHERE, et la combinaison des opérateurs de comparaison avec AND / OR — tout s'exécute en direct dans ton navigateur.
À propos du SQL abordé dans ce cours
Ce cours enseigne la syntaxe SQL universelle qui fonctionne sur les principaux SGBDR — MySQL, Oracle, PostgreSQL, SQL Server, et plus encore. Les bases comme CREATE TABLE / SELECT / WHERE / JOIN / GROUP BY s'écrivent de la même manière, peu importe la base de données vers laquelle tu bascules.
Pour des raisons techniques, la console intégrée au navigateur fait tourner SQLite, mais chaque fois qu'une fonctionnalité diffère entre les bases (vérification de longueur sur les types, manière de lister les tables, etc.) tu verras une note comparative du type En MySQL, tu écrirais... pour savoir quoi utiliser ailleurs.
SELECT — extraire toutes les colonnes
Pour extraire des données d'une table, tu utilises l'instruction SELECT. SELECT est la construction la plus utilisée en SQL : génération de rapports, affichage à l'écran, analyse de données, traitements par lots — presque toute opération qui « lit » des données commence par SELECT.
Commençons par la forme qui extrait toutes les colonnes d'une table telles quelles. Le * (astérisque) dans SELECT * est un symbole pour « toutes les colonnes », et le FROM nom_table qui suit indique de quelle table extraire.
-- Extrait toutes les colonnes et toutes les lignes de la table user
SELECT * FROM user;
Extraire seulement des colonnes précises
SELECT * est pratique, mais dans les vraies apps il vaut souvent mieux extraire seulement les colonnes dont tu as besoin. Le volume de données envoyées et reçues diminue, seules les colonnes que tu veux afficher reviennent, et les traitements en aval restent simples.
Pour choisir des colonnes, liste les noms de colonnes séparés par des virgules juste après SELECT. L'ordre dans lequel tu les écris est l'ordre dans lequel elles apparaissent dans le résultat.
-- Extrait juste name et age (2 colonnes)
SELECT name, age FROM user;
-- Tu peux aussi réordonner les colonnes
SELECT city, name FROM user;
AS — donner un alias à une colonne
Par défaut, l'en-tête de colonne dans le résultat d'un SELECT affiche le nom d'origine de la colonne. Avec colonne AS alias, tu peux changer le nom de colonne côté résultat pour ce que tu veux. Cela ne change pas le nom de colonne dans la table sous-jacente — c'est juste « comment cette colonne devrait s'appeler dans ce résultat de SELECT ».
Les alias sont aussi pratiques quand tu veux nommer une expression. Une opération arithmétique comme age + 1 ou un résultat de fonction d'agrégation comme SUM(price) n'ont pas de nom de colonne par défaut, donc sans AS l'en-tête serait l'expression brute — gênant à afficher ou à manipuler depuis ton code applicatif.
-- Donne un alias aux colonnes
SELECT name AS user_name, age AS user_age FROM user;
-- Donne un alias à une expression (calcule l'âge de l'année prochaine)
SELECT name, age + 1 AS next_year_age FROM user;
AS peut être omis
SELECT name AS user_name FROM user; et SELECT name user_name FROM user; (avec AS supprimé) ont le même sens. Cela dit, écrire AS rend explicite « c'est désormais un alias » pour le lecteur, donc ce cours écrit toujours AS de façon explicite.
Si tu as besoin d'espaces ou de caractères non-ASCII dans l'alias, entoure-le de guillemets doubles : AS "Âge de l'année prochaine".
WHERE — filtrer les lignes par condition
Jusqu'ici tu as appris à choisir des colonnes. Voyons maintenant comment filtrer des lignes. En ajoutant WHERE condition après SELECT cols FROM table, seules les lignes qui satisfont la condition se retrouvent dans le résultat.
Il est utile de voir SELECT comme un choix vertical (colonnes) et WHERE comme un choix horizontal (lignes).
Opérateurs de comparaison
À l'intérieur de WHERE, les conditions utilisent des opérateurs de comparaison (symboles qui comparent des valeurs et renvoient vrai/faux). Les opérateurs de comparaison de SQL ressemblent beaucoup à ceux des autres langages, avec un piège : l'égalité est un seul =, et non ==.
| Opérateur | Signification | Exemple |
|---|---|---|
| = | Égal | age = 30 |
| <> | Différent (!= fonctionne aussi) | city <> 'Tokyo' |
| < | Strictement inférieur | age < 30 |
| > | Strictement supérieur | age > 30 |
| <= | Inférieur ou égal | age <= 30 |
| >= | Supérieur ou égal | age >= 30 |
-- Extrait les utilisateurs de 30 ans et plus
SELECT * FROM user WHERE age >= 30;
-- Extrait les lignes où city vaut Tokyo (les chaînes vont entre apostrophes)
SELECT * FROM user WHERE city = 'Tokyo';
-- Extrait les lignes où city est autre chose que Tokyo
SELECT * FROM user WHERE city <> 'Tokyo';
La comparaison de chaînes avec `=` est sensible à la casse
Dans la console de ce cours, la comparaison de chaînes avec `=` est sensible à la casse. WHERE name = 'alice' ne correspondra pas à 'Alice' — le résultat est 0 ligne. En MySQL, le collation rend souvent cette comparaison insensible à la casse par défaut, donc la même requête peut renvoyer 1 ligne.
`WHERE colonne = NULL` ne fait pas ce que tu attends
Écrire WHERE name = NULL n'extraira pas « les lignes où name vaut NULL ». En SQL, NULL est traité comme « inconnu », et = NULL s'évalue toujours à NULL — ce que WHERE filtre. Pour extraire des lignes NULL, utilise le WHERE colonne IS NULL dédié. On couvre ça en détail dans l'article d'approfondissement WHERE — pour l'instant, retiens juste « ne pas utiliser = NULL ».
AND / OR — combiner plusieurs conditions
Au quotidien, tu as souvent besoin de combiner des conditions : « utilisateurs à Tokyo de 30 ans et plus », « membres de rang or ou platine ». SQL combine les conditions avec AND (les deux vraies) et OR (l'une ou l'autre vraie).
Un autre opérateur utile est NOT (négation de la condition). NOT (city = 'Tokyo') veut dire « pas Tokyo ». <> fait le même travail, donc pour l'instant concentre-toi sur AND et OR.
| Opérateur logique | Signification | Exemple |
|---|---|---|
| AND | Les deux conditions sont vraies | age >= 30 AND city = 'Tokyo' |
| OR | L'une ou l'autre est vraie | city = 'Tokyo' OR city = 'Osaka' |
| NOT | Négation de la condition | NOT (city = 'Tokyo') |
-- Utilisateurs à Tokyo de 30 ans et plus
SELECT name, age, city FROM user WHERE city = 'Tokyo' AND age >= 30;
-- Utilisateurs à Tokyo ou Osaka
SELECT name, city FROM user WHERE city = 'Tokyo' OR city = 'Osaka';
Utilise des parenthèses quand tu mélanges AND et OR
Quand AND et OR apparaissent dans le même WHERE, AND est évalué avant OR. A OR B AND C veut en réalité dire A OR (B AND C) — pas l'ordre que tu as écrit.
Pour éviter les surprises, rends l'ordre d'évaluation explicite avec des parenthèses quand tu mélanges AND et OR. Par exemple, « (Tokyo ou Osaka) et 30 ans et plus » s'écrit WHERE (city = 'Tokyo' OR city = 'Osaka') AND age >= 30. Les parenthèses rendent aussi ton intention claire au lecteur — en cas de doute, ajoute-les.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Lequel décrit le mieux les rôles de SELECT et WHERE ?
Question 3Que signifie l'opérateur de comparaison SQL <> ?