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