Cours

SQL Leçon 1

Les bases de données et SELECT

Ce qu'est une base de données, comment elle range les informations, et ta première requête pour les lire.

15 min

À la fin de cette leçon, tu sauras

  • Comprendre tables, lignes et colonnes
  • Lire toutes les colonnes ou seulement certaines avec SELECT
  • Écrire une requête SQL correcte

Une base de données, c'est quoi ?

Un site qui garde des comptes, des messages ou des produits doit ranger ces informations quelque part. On utilise une base de données : un logiciel (MySQL, PostgreSQL, SQLite…) qui stocke les données de façon organisée et permet de les retrouver très vite, même s'il y en a des millions.

Les données sont rangées dans des tables, qui ressemblent à des feuilles de tableur :

  • chaque colonne est une information (le nom, l'âge, la ville…) ;
  • chaque ligne est un élément (un élève, un produit…).

Dans toute cette série, on utilise une table eleves. En voici un extrait (la base d'exemple des exercices en contient 7, plus une table classes et une table notes) :

 id | prenom | nom      | age | ville
----+--------+----------+-----+----------
  1 | Léa    | Martin   |  18 | Chartres
  2 | Tom    | Bernard  |  19 | Dreux
  3 | Inès   | Petit    |  18 | Chartres
  4 | Hugo   | Durand   |  20 | Paris

Le langage SQL

Pour parler à la base, on écrit des requêtes en SQL (Structured Query Language). C'est le même langage pour presque toutes les bases de données.

SELECT : lire des données

SELECT * FROM eleves;

Ça se lit presque comme une phrase : « sélectionne tout (*) depuis la table eleves ». Le résultat contient toutes les lignes et toutes les colonnes. Le point-virgule termine la requête.

Pour ne récupérer que certaines colonnes, on les liste, séparées par des virgules :

SELECT prenom, ville FROM eleves;

Astuce : les mots du langage (SELECT, FROM) s'écrivent souvent en majuscules. Ce n'est pas obligatoire, mais ça permet de distinguer d'un coup d'œil le SQL des noms de tables et de colonnes.

Attention : dans une vraie application, évite SELECT *. Demander seulement les colonnes utiles est plus rapide et évite d'envoyer des données sensibles par erreur.

À toi de jouer

Écris une requête qui récupère seulement le prénom et l'âge de tous les élèves de la table eleves. N'oublie pas le point-virgule.

Cette fois, ta requête est vraiment exécutée sur une base d'exemple : le résultat s'affiche à droite pendant que tu tapes. Tu peux tout essayer, la base repart de zéro à chaque fois.

requete.sql
Résultat

Écris une requête : elle s'exécute pendant que tu tapes, sur une base d'exemple qui repart de zéro à chaque fois.

Voir les tables de la base d'exemple

classes (3 lignes)

idnom
1BTS SIO 1
2BTS SIO 2
3Terminale STMG

eleves (7 lignes)

idprenomnomagevilleclasse_id
1LéaMartin18Chartres1
2TomBernard19Dreux2
3InèsPetit18Chartres1
4HugoDurand20Paris2
5ChloéLambert17Lucé3
6NathanDubois19Chartres1
7SarahMoreau18DreuxNULL

notes (9 lignes)

ideleve_idmatierenote
11Développement16
21Réseau12
32Développement11
42Réseau15
53Développement18
64Réseau9
76Développement13
86Réseau14
95Gestion15
  • La requête s'exécute sans erreur
  • Le résultat contient le prénom et l'âge des 7 élèves
  • La requête commence par SELECT
  • Elle demande les colonnes prenom et age
  • Elle lit la table eleves
  • Elle n'utilise pas *
  • Elle se termine par un point-virgule
Bloqué ? Voir une solution
SELECT prenom, age FROM eleves;

Quiz

1Dans une table, une ligne représente…
2Que renvoie SELECT * FROM eleves; ?
3Comment lire seulement les colonnes nom et ville ?