La base relationnelle et SELECT
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 avecORDER BYet limiter avecLIMIT.
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 :
| id | titre | temps_minutes |
|---|---|---|
| 1 | Velouté de potimarron | 35 |
| 2 | Gratin dauphinois | 90 |
| 3 | Poulet rôti | 75 |
| 4 | Tarte aux pommes | 60 |
| 5 | Mousse au chocolat | 20 |
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.
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.
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érateur | Sens | Exemple |
|---|---|---|
= | égal | id = 3 |
<> | différent | id <> 3 |
<, <=, >, >= | comparaisons | temps_minutes > 60 |
LIKE | texte qui ressemble | titre 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 tablelit les données sans rien modifier.WHEREfiltre,ORDER BYtrie,LIMITgarde 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
SQL
Le mémo de SQL avec PostgreSQL : lire, écrire, créer des tables, joindre, agréger, indexer, transactions et requêtes paramétrées.
Ajouter, modifier et supprimer des lignes
Écrire dans une base avec INSERT, UPDATE et DELETE, et comprendre pourquoi oublier le WHERE peut tout effacer.
- Projet
- Lignes de code
- Niveau
- Cave
- Appartement
- SQL
- Pièce
- 1/7
- Plan n°
- sql/01.base-relationnelle