Bon, on a déjà commencé à se pencher sur SELECT, la commande SQL qui sert à extraire des données d'une table ou de plusieurs tables dans une base de données. On peut dire que c'est un peu comme la touche F5 dans ton navigateur, mais pour la base de données : "montre-moi ce que t'as". La structure la plus simple d'une requête ressemble à ça :
SELECT colonne1, colonne2, … colonneN
FROM table
Où :
SELECT— c'est le mot-clé avec lequel commence la requête.colonne1, colonne2, ...— c'est la liste des colonnes dont tu veux récupérer les données.FROM table— indique la table d'où tu veux extraire les données.
Allez, on va tout de suite découper ça en morceaux avec des exemples !
Structure principale de la commande SELECT
Sélectionner toutes les colonnes. Si tu veux voir toutes les données d'une table, tu peux utiliser l'étoile *. Par exemple, on a une table students :
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Pour extraire toutes les données de cette table, utilise la requête :
SELECT * FROM students
Et le résultat sera ce genre de tableau avec toutes les colonnes et lignes :
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Donc — toute la table, comme demandé.
Sélectionner des colonnes précises
Bien sûr, la plupart du temps tu veux juste prendre les colonnes qui t'intéressent, histoire de pas ramener des données inutiles. Par exemple, tu veux voir les noms et l'âge des étudiants. Du coup, tu dois écrire une requête comme ça :
SELECT name, age FROM students
Le résultat de la requête sera :
| name | age |
|---|---|
| Alex | 17 |
| Maria | 19 |
| Otto | 21 |
Tu vois la différence ? Quand tu sélectionnes juste les colonnes dont t'as besoin, la requête est plus rapide et plus propre.
Ordre d'exécution d'une requête
Les requêtes SQL, c'est un peu traître : même si on écrit SELECT au début, en vrai c'est la partie FROM qui est traitée en premier, et c'est seulement après qu'on récupère le résultat. Voilà comment ça se passe sous le capot :
- La table dans
FROMest traitée : le serveur trouve la table indiquée. - Les conditions sur les lignes sont appliquées (si y en a) : il ne garde que les lignes qui correspondent aux conditions.
- Les colonnes demandées sont sélectionnées : il extrait les données voulues des lignes restantes.
Donc dans une commande comme ça :
SELECT name FROM students
D'abord le serveur va trouver la table students, ensuite il va lire la colonne name, et seulement après il renverra le résultat.
Exemples pratiques
Exemple n°1 : Liste des étudiants.
Imaginons que tu es admin à la fac, et tu veux les noms de tous les étudiants. La requête :
SELECT name
FROM students;
Résultat :
| name |
|---|
| Alex |
| Maria |
| Otto |
Exemple n°2 : On ajoute l'âge et l'id.
Maintenant tu veux les id, les noms et l'âge. T'as juste à rajouter deux colonnes :
SELECT name, age, id
FROM students;
Résultat :
| name | age | id |
|---|---|---|
| Alex | 17 | 1 |
| Maria | 19 | 2 |
| Otto | 21 | 3 |
Exemple n°3 : On ajoute des expressions.
Imaginons que tu veux savoir combien d'années il reste à tes étudiants avant la majorité.
Dans ce cas, au lieu de age tu écris 21-age. Là, pour l'exemple, on part du principe que la majorité c'est à 21 ans :
SELECT name, 21-age
FROM students;
Et voilà le résultat :
| name | 21-age |
|---|---|
| Alex | 4 |
| Maria | 2 |
| Otto | 0 |
Tu verras plus de détails sur les expressions dans les prochaines leçons. Maintenant, voyons les erreurs que certains d'entre vous ont sûrement déjà croisées.
Erreurs typiques avec SELECT
Fautes de frappe dans les noms de tables ou de colonnes.
Une des erreurs les plus courantes — c'est quand le nom de la table ou de la colonne est mal écrit.
Si la base de données n'a pas de table studentsz, tu vas avoir une erreur :
SELECT name
FROM studentsz; -- Erreur : la table n'existe pas !
Ou si la colonne s'appelle name, mais tu écris student_name, encore une erreur :
SELECT student_name -- Erreur : la colonne n'existe pas !
FROM students;
La solution est simple : vérifie toujours les noms de tes tables et colonnes.
Erreurs de syntaxe dans la requête.
Une autre erreur fréquente — t'as oublié la virgule entre les colonnes :
SELECT name age id -- Erreur : il manque une virgule !
FROM students;
Mais t'inquiète pas. La requête SELECT fait que lire les données. Toutes les erreurs dans ce genre de requête ne peuvent pas abîmer les données de ta base. Mais quand on passera aux requêtes qui modifient les données — là, les erreurs peuvent coûter cher.
Utiliser * au lieu de colonnes précises.
Quand tu utilises *, tu récupères TOUTES les données, même celles dont t'as pas besoin. Ça ralentit les perfs et ça peut être galère avec des grosses tables. Choisis toujours seulement les colonnes dont t'as vraiment besoin.
GO TO FULL VERSION