CaveSQL SQLPièce 1/7Débutant

La base relationnelle et SELECT

Comprendre les tables, les lignes, les colonnes et la clé primaire, puis lire des données avec SELECT, WHERE, ORDER BY et LIMIT.

Ce que tu vas apprendre

  • Ce qu'est une base relationnelle : des tables, des lignes, des colonnes et une clé primaire.
  • Lire des données avec SELECT.
  • Filtrer avec WHERE, trier avec ORDER BY et limiter avec LIMIT.

Une base, ce sont des tableaux

Imagine un tableur. Une base de données relationnelle range les informations dans des tableaux reliés entre eux. Le langage SQL (Structured Query Language) sert à lui poser des questions et à modifier son contenu.

Dans cette ligne, on utilise PostgreSQL, le système de base de données que Supabase propose. Les exemples en sont tirés.

Notre fil rouge est un site de recettes. Voici la table recettes :

idtitretemps_minutes
1Velouté de potimarron35
2Gratin dauphinois90
3Poulet rôti75
4Tarte aux pommes60
5Mousse au chocolat20

Le vocabulaire

Une table regroupe un même type d'objets : ici, les recettes. Chaque ligne décrit une recette. Chaque colonne est une information : titre, temps_minutes.

La colonne id est la clé primaire : une valeur unique qui identifie une ligne sans ambiguïté. Deux recettes peuvent avoir le même titre, jamais le même id.

Pour suivre les exemples, tu as besoin d'un PostgreSQL à ta disposition, par exemple l'éditeur SQL d'un projet Supabase. Le cours 03 explique comment créer toi-même les tables. Pour l'instant, prends-les comme déjà remplies.

SELECT : lire des données

SELECT titre, temps_minutes
FROM recettes;

Cette requête demande les colonnes titre et temps_minutes de la table recettes. Elle renvoie une ligne par recette.

Pour obtenir toutes les colonnes, remplace la liste par une étoile :

SELECT * FROM recettes;

SELECT ne modifie jamais rien, tu peux donc l'essayer sans risque. La requête se termine par un point-virgule.

Écris les mots-clés du SQL en majuscules et les noms de tables et de colonnes en minuscules. PostgreSQL accepte les deux, mais la lecture est plus facile.

WHERE : filtrer les lignes

SELECT titre
FROM recettes
WHERE temps_minutes <= 60;

WHERE garde seulement les lignes qui respectent la condition. Ici : les recettes de 60 minutes ou moins.

Voici les comparaisons courantes :

OpérateurSensExemple
=égalid = 3
<>différentid <> 3
<, <=, >, >=comparaisonstemps_minutes > 60
LIKEtexte qui ressembletitre LIKE 'Tarte%'

Le signe % dans un LIKE remplace n'importe quelle suite de caractères. Les valeurs de texte s'écrivent entre apostrophes simples : 'Tarte%'.

Combine les conditions avec AND et OR :

SELECT titre
FROM recettes
WHERE temps_minutes < 60 AND titre LIKE '%chocolat%';

ORDER BY et LIMIT

Sans consigne, PostgreSQL ne garantit aucun ordre. Pour trier :

SELECT titre, temps_minutes
FROM recettes
ORDER BY temps_minutes DESC;

ASC trie du plus petit au plus grand (c'est l'ordre par défaut). DESC trie du plus grand au plus petit.

Pour garder seulement les premières lignes, ajoute LIMIT :

SELECT titre
FROM recettes
ORDER BY temps_minutes
LIMIT 3;

Tu obtiens les trois recettes les plus rapides. Le résultat serait : Mousse au chocolat, Velouté de potimarron, Tarte aux pommes.

NULL : l'absence de valeur

Parfois une information est inconnue. SQL la note NULL, qui n'est ni zéro ni un texte vide. On ne la teste pas avec = mais avec IS NULL :

SELECT titre FROM recettes WHERE temps_minutes IS NULL;

Cette requête liste les recettes dont la durée n'est pas renseignée.

À retenir

  • Une base relationnelle range les données dans des tables, faites de lignes et de colonnes.
  • La clé primaire identifie chaque ligne de façon unique.
  • SELECT colonnes FROM table lit les données sans rien modifier.
  • WHERE filtre, ORDER BY trie, LIMIT garde les premières lignes.
  • Le texte s'écrit entre apostrophes simples, et l'absence de valeur se teste avec IS NULL.

Pour aller plus loin

Sources officielles

Ensuite

Projet
Lignes de code
Niveau
Cave
Appartement
SQL
Pièce
1/7
Plan n°
sql/01.base-relationnelle
Lignes de code · fiches rédigées à partir des documentations officielles, sources citées en bas de chaque page.