Les requêtes de base
SELECT id, title FROM skills WHERE roadmap_id = 1 ORDER BY sort_order LIMIT 20;
SELECT s.title, COUNT(r.id) AS resources_count
FROM skills s
LEFT JOIN resources r ON r.skill_id = s.id
GROUP BY s.id, s.title;
INSERT INTO skills (slug, roadmap_id) VALUES ("foo", 1);
UPDATE skills SET sort_order = 5 WHERE slug = "foo";
DELETE FROM skills WHERE slug = "foo";
Concepts clés
- JOIN : INNER, LEFT, RIGHT.
- WHERE vs HAVING : filtrer avant/après l'agrégation.
- Index : accélèrent les lookups mais ralentissent les inserts.
- Transactions : BEGIN, COMMIT, ROLLBACK pour la cohérence.