Linkr
Accueil Ressources Outils Documentation Blog Démo
EN
Apprendre la programmation
  • Pourquoi apprendre à coder ?
  • Les bases de la programmation
  • Introduction au SQL
3/5
10 min Boris Delange, Martin Castan, Lou Vignais · 02/07/2026

Introduction au SQL

À quoi sert le SQL, le langage des bases de données. SELECT, WHERE, JOIN, GROUP BY illustrés sur des données de santé, et des ressources gratuites pour s'entraîner.

En résumé

Le SQL (Structured Query Language) est le langage universel pour interroger une base de données. C’est la porte d’entrée des données d’un entrepôt de données de santé : on l’utilise pour choisir les colonnes, filtrer les lignes, relier les tables et agréger. Cinq mots-clés suffisent pour l’essentiel : SELECT, FROM, WHERE, JOIN, GROUP BY.

Si vous n’avez pas encore lu Pourquoi apprendre à coder ?, il situe le SQL parmi les autres langages. En résumé : les données d’un entrepôt de données de santé (EDS) sont rangées dans une base de données, et le SQL est le langage qui permet de l’interroger pour obtenir ce dont on a besoin.

À quoi ressemble une base de données

Une base de données ressemble à un classeur de plusieurs feuilles reliées entre elles — ce qu’on appelle des tables, décrites en détail dans l’article sur l’organisation des données. Prenons deux tables inspirées du modèle OMOP :

Table person (patients)

person_idyear_of_birthgender
11951F
21978M
31990F

Table measurement (créatinine)

person_idvaluedate
11422023-04-02
11282023-04-05
2882023-06-11

Chaque table a une clé (ici person_id) qui permet de la relier aux autres. Écrire du SQL, c’est décrire à la base ce qu’on veut voir à partir de ces tables.

Les quatre gestes de base

SELECT et FROM — choisir les colonnes d’une table

SELECT indique quelles colonnes afficher, et FROM de quelle table. Le * signifie « toutes les colonnes ».

SQL
-- Seulement l'identifiant et l'année de naissance
SELECT person_id, year_of_birth
FROM person;
Résultat
person_idyear_of_birth
11951
21978
31990

Les commentaires

Une ligne commençant par -- est un commentaire : elle est ignorée par la base et sert à expliquer le code aux humains. Les tutoriels ci-dessous vous feront écrire vos premières requêtes en direct.

WHERE — filtrer les lignes

WHERE garde uniquement les lignes qui remplissent une condition.

SQL
-- Les patientes nées avant 1960
SELECT person_id, year_of_birth
FROM person
WHERE gender = 'F'
AND year_of_birth < 1960;
Résultat
person_idyear_of_birth
11951

AND (« et ») combine plusieurs conditions : une ligne n’est gardée que si elle les remplit toutes. Ici, il faut à la fois être de sexe féminin et être née avant 1960. Son pendant OR (« ou ») garde les lignes qui remplissent au moins une des conditions.

Lire une requête comme une phrase

Une requête se lit presque comme une phrase. Celle-ci se traduit littéralement par : sélectionne les colonnes person_id et year_of_birth depuis la table person, où le sexe vaut F et l’année de naissance est inférieure à 1960.

C’est exactement le geste que vous faites avec un filtre dans un tableur — filtrer sur les lignes et les colonnes — mais écrit une fois, reproductible, et applicable à des millions de lignes.

JOIN — relier les tables

Les données d’un patient sont réparties sur plusieurs tables. JOIN les rassemble en s’appuyant sur la clé commune.

SQL
-- Associer chaque mesure de créatinine au patient correspondant
SELECT p.person_id, p.year_of_birth, m.value, m.date
FROM person AS p
JOIN measurement AS m
ON p.person_id = m.person_id;
Résultat
person_idyear_of_birthvaluedate
119511422023-04-02
119511282023-04-05
21978882023-06-11

Ici p et m sont des surnoms (alias) donnés aux tables pour raccourcir l’écriture. La condition ON p.person_id = m.person_id dit à la base comment apparier les lignes des deux tables.

GROUP BY — agréger

GROUP BY regroupe les lignes pour calculer des statistiques par groupe : un compte, une moyenne, un maximum…

SQL
-- Nombre de mesures et créatinine moyenne, par patient
SELECT person_id,
     COUNT(*)    AS nb_mesures,
     AVG(value)  AS creatinine_moyenne
FROM measurement
GROUP BY person_id;
Résultat
person_idnb_mesurescreatinine_moyenne
12135.0
2188.0

COUNT(*) compte les lignes de chaque groupe, et AVG (pour average, « moyenne » en anglais) en calcule la moyenne. D’autres fonctions suivent le même principe : MIN, MAX, SUM (somme). Le mot AS donne un nom à la colonne calculée.

Tout mettre bout à bout. Une requête réaliste combine ces quatre gestes. Par exemple : « pour chaque patiente de plus de 65 ans, la créatinine maximale mesurée en 2023 ».

SQL
SELECT p.person_id,
     MAX(m.value) AS creatinine_max
FROM person AS p
JOIN measurement AS m
ON p.person_id = m.person_id
WHERE p.gender = 'F'
AND (2023 - p.year_of_birth) > 65
AND m.date BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY p.person_id;
Résultat
person_idcreatinine_max
1142

On sélectionne (SELECT), on relie (JOIN), on filtre (WHERE), on regroupe (GROUP BY). C’est le squelette de la plupart des extractions.

Ressources pour se former

Le SQL s’apprend en écrivant des requêtes, pas en les lisant. Voici trois ressources gratuites : un cours structuré en français, puis deux ressources en anglais pour s’exercer directement dans le navigateur, sans rien installer.

OpenClassrooms — Requêtez une base de données avec SQL
Type : Cours en ligne Langue : Français Coût : Gratuit Durée : ~12 h Niveau : Débutant à intermédiaire Prérequis : Bases de la programmation

Ce que vous allez apprendre

  • Un cours complet et progressif : comment les tables d’une base sont organisées et reliées, puis les requêtes simples, puis les fonctions plus avancées.
  • Des quiz à la fin de chaque partie pour vérifier ses acquis.
  • Demande d’installer un petit logiciel gratuit, SQLiteStudio, pour exécuter les requêtes.
W3Schools — SQL Tutorial
Type : Tutoriel interactif Langue : Anglais Coût : Gratuit Durée : ~6 h Niveau : Débutant Prérequis : Aucun

Ce que vous allez apprendre

  • Toute la syntaxe de base : SELECT, WHERE, JOIN, GROUP BY et les fonctions d’agrégation.
  • Un bouton « Try it Yourself » qui exécute vos requêtes sur une vraie base, en temps réel.
  • Idéal pour un tout premier contact et pour revenir vérifier une syntaxe.
SQLBolt
Type : Exercices interactifs Langue : Anglais Coût : Gratuit Durée : ~4 h Niveau : Débutant à intermédiaire Prérequis : Aucun

Ce que vous allez apprendre

  • Des leçons courtes suivies d’exercices corrigés, à faire dans l’ordre.
  • Une difficulté qui monte pas à pas, jusqu’aux jointures et sous-requêtes.
  • Parfait pour pratiquer après une première lecture de la syntaxe.

Parcours conseillé pour le SQL

  1. Découvrez la syntaxe avec le cours OpenClassrooms (~12 h, en français) ou, si l’anglais ne vous gêne pas, avec W3Schools (~6 h).
  2. Consolidez avec les exercices de SQLBolt (~4 h, en anglais).
  3. Appliquez le SQL à des données de santé réelles avec nos tutoriels OMOP interactifs, qui font tourner du SQL sur une base MIMIC dans le navigateur (débutant puis intermédiaire).

Comptez entre dix et quinze heures au total pour être à l’aise.

Le SQL et Linkr

Dans Linkr, le Study Designer génère automatiquement le SQL correspondant aux critères d’inclusion et aux variables que vous définissez à la souris. Savoir lire ce SQL vous aide à vérifier ce que fait l’outil et à reprendre la main pour des besoins spécifiques.

  • Le SQL interroge les bases de données : c'est la porte d'entrée des données d'un entrepôt.
  • Cinq mots-clés couvrent l'essentiel : SELECT (colonnes), FROM (table), WHERE (lignes), JOIN (relier les tables), GROUP BY (agréger).
  • Une extraction réaliste combine ces quatre gestes dans une seule requête.
  • Le cours OpenClassrooms apprend la syntaxe en français ; W3Schools et SQLBolt, en anglais, permettent de s'entraîner gratuitement dans le navigateur ; les tutoriels OMOP appliquent le SQL à des données de santé.
  • Le Study Designer de Linkr génère le SQL à votre place — savoir le lire aide à vérifier et à aller plus loin.
Article suivant : Introduction à R

À propos de l'auteur

Voir le profil
Boris Delange
Boris Delange

Médecin réanimateur · AHU en informatique médicale

Médecin en Médecine Intensive - Réanimation de formation, j'exerce depuis 2023 comme Assistant Hospitalo-Universitaire en informatique médicale au Centre de Données Cliniques (CDC) du CHU de Rennes. Je suis également chercheur au LTSI (Université de Rennes), dans l'équipe DOMASIA (DOnnées MAssives et Systèmes d'Information Apprenants en santé).

À la jonction du soin et de la data science, j'ai créé Linkr pour relier cliniciens, data scientists, ingénieurs et étudiants en santé autour de l'analyse des données de santé.

Voir le profil LinkedIn Voir le profil ResearchGate
PrécédentLes bases de la programmation

Produit

  • Accueil
  • Démo

Ressources

  • Documentation
  • Ressources
  • Outils
  • Blog

Communauté

  • Code source Framagit
  • Code source Github

À propos

  • InterHop.org
  • Contact

2021–2026 InterHop — CC BY-NC-SA 4.0 (site) · GPLv3 (logiciel)