Une table, c'est un tableau
Tu connais déjà l'idée sans le savoir : une table, c'est exactement un tableau, comme dans un chiffrier. Chaque ligne est un enregistrement (une chose réelle : une étoile, une planète) et chaque colonne est un champ (une caractéristique : son nom, sa masse).
Voici une petite table d'exoplanètes, comme celles du Projet 3 du cours :
| id | nom | masseTerre | idEtoile |
|---|---|---|---|
| 1 | Kepler-22 b | 2.1 | 10 |
| 2 | Proxima b | 1.3 | 11 |
| 3 | TRAPPIST-1 e | 0.7 | 12 |
| 4 | TRAPPIST-1 f | 1.0 | 12 |
Remarque la colonne idEtoile : elle ne contient pas le nom de l'étoile, juste un numéro. Pourquoi ? Parce que l'étoile vit dans sa propre table, et qu'on ne veut surtout pas réécrire « TRAPPIST-1 » dans chaque ligne de planète. Si un jour on corrige son nom, on le change à un seul endroit.
| id | nom | distanceAnneesLumiere |
|---|---|---|
| 10 | Kepler-22 | 635 |
| 11 | Proxima Centauri | 4.2 |
| 12 | TRAPPIST-1 | 40 |
Deux notions de clés relient ces tables :
- Clé primaire : la colonne
idqui identifie de façon unique chaque ligne. Deux étoiles ne peuvent pas avoir le mêmeid. - Clé étrangère : la colonne
idEtoiledans la table des planètes. Elle « pointe » vers leidd'une étoile. C'est le fil qui relie une planète à son soleil.
Le schéma du lien, en résumé :
# table etoiles # table planetes
id nom ... id nom idEtoile
-- --------------- -- ------------- --------
10 Kepler-22 1 Kepler-22 b 10 ----> pointe vers etoiles.id = 10
12 TRAPPIST-1 3 TRAPPIST-1 e 12 ----> pointe vers etoiles.id = 12
4 TRAPPIST-1 f 12 ----> pointe vers etoiles.id = 12
On dit « relationnel » justement à cause de ces relations entre tables. C'est l'idée géniale de 1970 qui fait encore tourner la planète aujourd'hui.
SQL : on décrit ce qu'on veut, pas comment
Pour poser des questions à ces tables, on utilise un langage à part : SQL (Structured Query Language). Sa particularité ? Il est déclaratif : tu décris le résultat que tu veux, et le système se débrouille pour aller le chercher.
Filtrer les planètes plus massives que la Terre :
SELECT nom, masseTerre FROM planetes WHERE masseTerre > 1.0;
Et pour aller chercher, en même temps, le nom de l'étoile de chaque planète, on joint les deux tables par leur clé (JOIN) :
SELECT planetes.nom, etoiles.nom, etoiles.distanceAnneesLumiere FROM planetes JOIN etoiles ON planetes.idEtoile = etoiles.id WHERE etoiles.distanceAnneesLumiere < 50;
Compare avec l'approche Python que tu as apprise dans le cours, où tu écris toi-même la boucle qui parcourt chaque élément et le if qui filtre :
# Python : on dit COMMENT parcourir et tester for planete in planetes: if planete["masseTerre"] > 1.0: print(planete["nom"])
Le SQL et le Python font la même chose ici : filtrer. Mais en SQL tu n'écris jamais la boucle ni le if à la main : tu décris la condition (WHERE), et le moteur applique le filtre, même sur des millions de lignes, en choisissant tout seul la façon la plus rapide. C'est ça, déclaratif.
Les vrais systèmes qui font tourner le monde
SQL n'est pas un seul logiciel : c'est un langage commun parlé par toute une famille de systèmes de bases de données. En voici les plus connus, et pour qui chacun brille.
| Système | Pour quoi / pour qui |
|---|---|
| SQLite | Une base entière dans un seul fichier, sans serveur. Cachée dans ton téléphone, ton navigateur, tes applis. Parfaite pour apprendre et pour les petits projets. C'est le module sqlite3 de Python. |
| PostgreSQL | Le poids lourd libre et gratuit, très rigoureux et complet. Adoré des scientifiques, des startups et des grandes plateformes web. |
| MySQL / MariaDB | Le duo libre le plus répandu derrière les sites web. WordPress, et donc une bonne partie d'Internet, roule là-dessus. |
| Oracle | Le géant commercial des très grandes entreprises et des banques. Coûteux, mais réputé pour les volumes énormes et critiques. |
| SQL Server | La base de données de Microsoft, omniprésente dans les entreprises de l'écosystème Windows. |
La NASA, les banques, les hôpitaux, les compagnies aériennes : leurs données les plus précieuses dorment dans des bases relationnelles. Quand la fiabilité compte vraiment, c'est encore SQL, 50 ans plus tard.
À toi de jouer
Au jour des fichiers, tu as croisé un mini-moteur SQL directement dans le navigateur : tu y tapais déjà des SELECT sur une table de planètes. Va le revoir avec ce que tu sais maintenant sur les clés et les jointures.
Et pour écrire du vrai SQL en ligne, sur une vraie base SQLite, sans rien installer, ouvre un bac à sable et essaie les requêtes SELECT, WHERE et JOIN de cette page :