CodeGym /Cours /SQL SELF /Sélection de colonnes spécifiques : extraire des données ...

Sélection de colonnes spécifiques : extraire des données par noms de colonnes

SQL SELF
Niveau 2 , Leçon 0
Disponible

Quand on extrait des données d'une base, on s'intéresse rarement à toutes les colonnes. Par exemple, dans la table des employés employees, il peut y avoir 15 colonnes : prénom, nom, date de naissance, poste, salaire, date d'embauche, etc. Mais toi, tu veux juste connaître leurs prénoms et postes. Logique, ramener toutes les données, c'est inutile et pas efficace. C'est là que l'art de sélectionner des colonnes précises entre en jeu.

Pour faire une analogie, c'est comme si tu devais sortir seulement les pommes d'un panier rempli d'oranges, de pommes et de bananes. Stylé, non ? C'est exactement ce qu'on va faire !

Syntaxe

Petit rappel, SQL a été conçu pour être super user-friendly.

Déjà, la casse du texte de la requête n'a aucune importance. Tu peux écrire SELECT, Select ou select, ça marchera pareil. Ensuite, les retours à la ligne ne comptent pas. Le SGBD va tout transformer en une seule longue ligne, donc écris comme tu veux, c'est chill.

Comme tu t'en doutes sûrement, il n'y a pas que les mots-clés SELECT et FROM. Sinon, il n'y aurait pas autant de discussions autour de SQL. La version complète d'une requête SQL ressemble à ça :

SELECT colonnes
FROM table
WHERE condition
GROUP BY colonnes
HAVING colonnes
ORDER BY tri

Où :

  • colonnes — ce sont les noms des colonnes que tu veux récupérer.
  • table — le nom de la table d'où tu extrais les données.
  • condition — la condition pour filtrer les lignes.
  • tri — les lignes et l'ordre de tri.

Facile, non ? On va voir ça sur un vrai exemple. Mais commençons par des trucs plus simples.

Exemple de requête basique

Imaginons qu'on a une table students avec des infos sur les étudiants. Voilà à quoi peut ressembler la structure de la table :

id first_name last_name age grade
1 Alex Lin 20 A
2 Anna Song 22 B
3 Otto Art 19 A

Maintenant, on veut juste connaître les noms de famille last_name et les notes grade de tous les étudiants.

La requête ressemblera à ça :

SELECT last_name, grade
FROM students;

Résultat :

last_name grade
Lin A
Song B
Art A

Bravo, tu viens d'économiser des ressources de la base de données et tu as rendu le résultat plus lisible !

Concaténation de chaînes

Tu sais déjà sélectionner des données, essayons un truc plus fun. Dans notre table, le prénom et le nom sont dans des colonnes différentes. On va écrire une requête qui affiche une colonne avec le nom complet de l'étudiant.

Pour concaténer deux chaînes dans PostgreSQL, on utilise l'opérateur ||. Notre requête SELECT va ressembler à ça :

SELECT first_name || last_name, grade
FROM students;

Résultat :

first_name || last_name grade
AlexLin A
AnnaSong B
OttoArt A

Hmm. Il manque un truc, non ? Genre un espace entre le prénom et le nom ! Corrigeons ça.

SELECT first_name || ' ' || last_name, grade
FROM students;

Résultat :

first_name || ' ' || last_name grade
Alex Lin A
Anna Song B
Otto Art A

Nickel. Le contenu du résultat me plaît, mais le titre de colonne, bof... J'aimerais bien voir full name, ou juste name, mais pas first_name || ' ' || last_name. C'est pas joli ni pratique. Mais t'inquiète, il y a une solution.

Sélection avec alias

Tu peux rendre tes requêtes SQL plus lisibles avec des alias. C'est juste une façon de donner un nouveau nom à une colonne dans la requête. Les alias utilisent le mot-clé AS (techniquement tu peux l'omettre, mais pour la lisibilité, c'est mieux de le garder).

Regarde cet exemple :

SELECT first_name AS "Prénom", last_name AS "Nom de famille", grade AS "Note"
FROM students;

Résultat :

Prénom Nom de famille Note
Alex Lin A
Anna Song B
Otto Art A

Ici, on a :

  1. Renommé les colonnes pour que leurs noms soient plus clairs en français.
  2. Utilisé des alias dans la requête avec AS.

Si ton boss ou ton client veut voir des données utilisateurs sans devenir fou devant le tableau — les alias sont tes potes.

Maintenant, améliorons un peu notre requête pour le nom complet.

SELECT first_name || ' ' || last_name  AS "Nom complet", grade  AS "Note"
FROM students;

Résultat :

Nom complet Note
Alex Lin A
Anna Song B
Otto Art A

Parfait. C'est exactement ce qu'on voulait.

Pourquoi sélectionner seulement certaines colonnes ?

  1. Performance

Imagine que tu bosses avec une énorme table de millions de lignes et des centaines de colonnes. Extraire toutes les données avec SELECT * peut prendre des minutes, voire des heures, et bouffer plein de ressources serveur. Là, tu récupères juste ce qu'il te faut.

  1. Lisibilité

Quand tu ne prends que les colonnes utiles, le résultat est beaucoup plus facile à comprendre. Sinon, ton résultat ressemblera à un fil d'actu interminable un vendredi soir.

  1. Moins d'erreurs

Moins tu traites de données dans ta requête, moins tu risques de te planter. Surtout si tu bosses ensuite avec ces données.

À quoi faut-il penser ?

Alias de tables

Une autre façon de gérer les noms de tables trop longs — c'est d'utiliser des alias de tables. Ils doivent rappeler le nom d'origine de la table ou avoir un lien logique avec son contenu.

SELECT sa05.first_name, sa05.course_id
FROM students_archive_2005 AS sa05

Cette méthode est super utile si tu as des noms de tables à rallonge genre university_students_enrollments_records — tu peux utiliser usr ou us

Erreurs classiques quand tu sélectionnes des colonnes spécifiques

  1. Fautes dans les noms de colonnes. Si tu te trompes dans le nom d'une colonne, tu auras un message d'erreur du style : ERROR: column "lastname" does not exist. Vérifie bien l'orthographe des noms de colonnes.

  2. Noms en conflit. Quand plusieurs tables sont dans la requête, précise toujours à quelle table appartient le champ. Par exemple, students.first_name.

  3. L'utilisation de SELECT * — c'est le piège des débutants. Oui, ça marche et c'est pratique, mais dans les gros projets, c'est une mauvaise habitude ! Sélectionne toujours seulement les colonnes dont tu as vraiment besoin.

2
Mission
SQL SELF, niveau 2, leçon 0
Bloqué
Extraction de données en utilisant des alias
Extraction de données en utilisant des alias
2
Mission
SQL SELF, niveau 2, leçon 0
Bloqué
Création d'une nouvelle colonne à partir des données d'autres colonnes
Création d'une nouvelle colonne à partir des données d'autres colonnes
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION