#Bases de données & SQL — Introduction
Ce cours vous accompagne de l’idée “j’ai des données à organiser” jusqu’aux requêtes qui répondent à des questions concrètes. Plutôt que d’empiler de la syntaxe, on installe un modèle mental: des tables bien pensées, des liens explicites, et des requêtes lisibles qui se mesurent et s’améliorent au besoin.
Contexte pédagogique: ce module correspond au niveau L2 (Valrose — UCA) et prépare aux projets où des choix de modélisation et des requêtes robustes sont requis.
#Premiers pas: poser une question à la base
Une requête SELECT
répond à quatre questions: quelles colonnes, quelles lignes, dans quel ordre, et combien. Par exemple, afficher les 5 derniers utilisateurs par identifiant:
1select id, name2from users3where id >= 14order by id desc5limit 5;
Le moteur suit un ordre logique (FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
). Retenez que WHERE
filtre avant le SELECT
et ne voit pas ses alias; ORDER BY
, si.
#Tisser des liens: les jointures
Relier des tables via des clés (primaires/étrangères) permet de reconstruire l’information dispersée. Un INNER JOIN
ne garde que les correspondances; un LEFT JOIN
conserve toutes les lignes de gauche, complétées par des NULL
en cas d’absence.
1select u.name, o.amount2from users u3left join orders o on o.user_id = u.id;
Pensez à la cardinalité: une relation 1→N multiplie les lignes. Si vous agrégerez ensuite, placez le GROUP BY
après la jointure et vérifiez vos totaux.
#Résumer: agrégations par groupe
GROUP BY
forme des groupes; les fonctions COUNT
, SUM
, AVG
, MIN
, MAX
calculent des résumés. HAVING
filtre les groupes déjà calculés, WHERE
filtre les lignes en amont.
1select user_id, sum(amount) as total2from orders3group by user_id4having total > 50;
#Mini‑atelier guidé (10 minutes)
- Créez une table
orders(user_id, amount)
et insérez quelques lignes. - Affichez les utilisateurs et leur total de commandes (0 si aucune): essayez
LEFT JOIN
avecCOALESCE
. - Tirez le top‑3 des utilisateurs par
total
.
#Modéliser d’abord, optimiser ensuite
La normalisation évite la redondance (et les anomalies de mise à jour). Indexer les colonnes filtrées et jointes accélère les requêtes critiques. Les transactions (ACID) regroupent plusieurs opérations en une unité cohérente.
Commencez par un schéma simple, écrivez des requêtes lisibles et mesurables, puis indexez là où les profils d’usage le justifient. Documentez vos choix.