SQL

Des tables reliées, un langage pour les interroger

La technologie reine pour ranger des données fiables depuis 50 ans : on découpe l'information en tables qui se relient, et on les interroge avec SQL.

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 :

idnommasseTerreidEtoile
1Kepler-22 b2.110
2Proxima b1.311
3TRAPPIST-1 e0.712
4TRAPPIST-1 f1.012

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.

idnomdistanceAnneesLumiere
10Kepler-22635
11Proxima Centauri4.2
12TRAPPIST-140

Deux notions de clés relient ces tables :

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èmePour quoi / pour qui
SQLiteUne 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.
PostgreSQLLe poids lourd libre et gratuit, très rigoureux et complet. Adoré des scientifiques, des startups et des grandes plateformes web.
MySQL / MariaDBLe duo libre le plus répandu derrière les sites web. WordPress, et donc une bonne partie d'Internet, roule là-dessus.
OracleLe géant commercial des très grandes entreprises et des banques. Coûteux, mais réputé pour les volumes énormes et critiques.
SQL ServerLa 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

Tu en as déjà vu un avant-goût

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.

Le mini-moteur SQL du jour des fichiers

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 :

Essayer du SQL en ligne