Ouverture : interroger des données avec SQL
Le tableur est fait pour qu'un humain travaille dans les données, cellule par cellule. Mais quand une table compte des millions de lignes, on ne l'ouvre plus : on l'interroge. Pour ça, il existe un langage, et il est partout : SQL.
Cours ici, activité sur Capytale
Cette page est le cours. L'activité se fait sur Capytale, sur une base de données réelle : les passagers du Titanic.
Ce chapitre est une ouverture : SQL n'est pas au programme de SNT, et ne sera pas évalué. Il est là parce qu'il éclaire tout le reste.
Pourquoi apprendre ça
Trois raisons, et la troisième est la vraie.
C'est plus rapide. Donne-toi 50 000 lignes et cherche le prix moyen des billets par port d'embarquement : au tableur, tu vas souffrir. En SQL, c'est trois lignes et un résultat immédiat.
C'est partout. Presque toutes les données du monde vivent dans des bases interrogées en SQL : ton dossier médical, ton relevé bancaire, tes commandes en ligne, tes notes dans Pronote. Le tableur, lui, ne sort jamais vraiment de ton ordinateur. SQL n'est pas un outil de spécialiste, c'est une compétence de base dans un monde où les données sont partout.
C'est une autre façon de programmer, et c'est le plus intéressant.
Le grand renversement : dire quoi, pas comment
Depuis septembre, tous tes programmes disent à la machine comment faire, étape par étape : avance, tourne, répète 4 fois, parcours les colonnes, colorie ce pixel. On appelle ça la programmation impérative : tu donnes des ordres, dans l'ordre.
SQL fonctionne à l'envers. Tu décris ce que tu veux obtenir, et jamais comment l'obtenir :
Traduction : « je veux le sexe et l'âge des passagers de 1ère classe, du plus âgé au plus jeune ». Et c'est tout.
Regarde bien ce qu'il n'y a pas dans cette requête : aucune boucle pour parcourir les 891 passagers, alors que tu viens de passer des semaines à en écrire. Tu ne dis pas à la machine d'examiner les lignes une par une : tu lui dis ce que tu veux, elle se débrouille.
On appelle ça un langage déclaratif. C'est l'autre grande famille de langages de programmation, et tu viens d'y entrer.
Les quatre traitements, un mot-clé chacun
Tu connais déjà les traitements de base sur une table. SQL leur donne un mot :
| Ce qu'on veut faire | Au tableur | En SQL |
|---|---|---|
| choisir des colonnes | masquer des colonnes | SELECT |
| dire dans quelle table | choisir l'onglet | FROM |
| filtrer des lignes | AutoFiltre | WHERE |
| trier | Données, Trier | ORDER BY |
| calculer | SOMME, MOYENNE, MAX, MIN |
COUNT, AVG, MAX, MIN |
Les mêmes gestes, les mêmes données, un autre outil. C'est le fil de tout ce chapitre.
Le = prend ici son troisième sens
Attention, tu as déjà croisé ce signe deux fois, et il ne veut toujours pas dire la même chose :
| Où | Exemple | Ce que = veut dire |
|---|---|---|
| En Python | age = 16 |
range la valeur 16 dans la boîte age |
| Dans le tableur | =SOMME(A1:A10) |
démarre une formule à calculer |
| En SQL | WHERE sex = 'female' |
teste si c'est égal : garde les lignes où c'est vrai |
En SQL, le = retrouve donc le sens de l'égalité des mathématiques : c'est une question posée à chaque ligne (« ce passager est-il une femme ? »), pas un rangement. Le même symbole, trois métiers : c'est le contexte qui te dit lequel.
L'activité : le Titanic
À faire
Ouvre l'activité Capytale indiquée par ton professeur. Tu y interrogeras une base réelle : les 891 passagers du Titanic, avec leur classe, leur sexe, leur âge, le prix de leur billet, leur port d'embarquement, et s'ils ont survécu.
Tu y découvriras SELECT, WHERE, ORDER BY, les fonctions de calcul, puis GROUP BY, qui permet de calculer par catégorie (par exemple : le taux de survie par classe).
Des données à manier avec précaution
Cette base recense 891 passagers sur les 2 224 personnes à bord : elle est incomplète. L'âge d'un passager sur cinq est inconnu, et ces absences ne sont pas réparties au hasard (elles touchent davantage la 3e classe).
Tu retrouves ici la leçon du mini-projet YouTube : avant de conclure, demande-toi toujours ce que les données ne disent pas.
Ce que tu vas découvrir
Sans rien dévoiler : à la fin de l'activité, tu calculeras le taux de survie par classe. Les chiffres que tu obtiendras ne sont pas neutres, et ils racontent quelque chose de très concret sur les inégalités face à la mort, cette nuit-là.
C'est peut-être la chose la plus importante de ce chapitre : les données ne sont pas de la décoration. Bien interrogées, elles disent la vérité sur le monde, y compris ce qu'on préférerait ne pas voir.
Ce qu'on retient
- SQL est le langage universel pour interroger des bases de données ; il travaille sur des tables, comme le tableur.
- Il est déclaratif : on dit ce qu'on veut, jamais comment l'obtenir. Aucune boucle, contrairement à tout ce qu'on a écrit jusqu'ici (Python est impératif).
- Les quatre traitements ont chacun leur mot-clé :
SELECT/FROM(choisir),WHERE(filtrer),ORDER BY(trier),COUNT/AVG/MAX/MIN(calculer). - En SQL,
=est un test d'égalité, pas une affectation (Python) ni le début d'une formule (tableur). - Toujours la même exigence : critiquer les données avant d'en tirer une conclusion.