Aller au contenu principal

Bases de données & SQL (L2)

Progression du module

#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:

sqlsql
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.

sqlsql
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.

sqlsql
1select user_id, sum(amount) as total2from orders3group by user_id4having total > 50;

#Mini‑atelier guidé (10 minutes)

  1. Créez une table orders(user_id, amount) et insérez quelques lignes.
  2. Affichez les utilisateurs et leur total de commandes (0 si aucune): essayez LEFT JOIN avec COALESCE.
  3. Tirez le top‑3 des utilisateurs par total.
Chargement de l’éditeur...

#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.

Règles pratiques

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.

Sections

Mini-projet

Mini-projet: Mini-ETL vers SQLite