Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases de SQL 2 : compter et relier

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs6 min de lecture6 commandes

Ce que tu vas faire

Une base de données sait répondre à des questions sur beaucoup de lignes à la fois : combien il y en a, combien de chaque sorte, lesquelles n’ont rien. Dans cette leçon, tu poses quatre questions à la base de données d’une boutique, avec COUNT, GROUP BY, JOIN et LEFT JOIN. Tu ne changes rien.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu’elle indique que le lab tourne. Le premier démarrage est un peu plus long, car la base de la boutique est créée à ce moment-là. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l’une après l’autre, dans la même session. Pour les voir passer, ou pour taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

1. Dire au terminal comment se connecter

Ce sont les deux mêmes commandes que dans « Les bases de SQL ». La première permet au client d’accepter le certificat de MySQL. La seconde crée le raccourci sql : il te connecte à la base shop et exécute une instruction. Relance-les si le terminal a redémarré : ça ne fait aucun mal.

Commande
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

2. Compter des lignes

COUNT(*) compte les lignes. AS customers donne un nom à la colonne de la réponse. La boutique a 40 clients.

Commande
sql "SELECT COUNT(*) AS customers FROM customers"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

3. Compter chaque groupe

GROUP BY country fait une ligne de réponse par pays, et COUNT(*) compte les clients de chaque pays. ORDER BY customers DESC met le plus grand nombre en premier. Le Royaume-Uni en a 14.

Commande
sql "SELECT country, COUNT(*) AS customers FROM customers GROUP BY country ORDER BY customers DESC LIMIT 3"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

4. Compter avec deux tables

Un produit ne connaît sa catégorie que par un numéro. JOIN met le nom de la catégorie à côté, et tu peux alors compter les produits de chacune. Books, Kitchen et Outdoors en ont cinq chacune. Deux produits n’ont pas de catégorie : un JOIN les laisse de côté.

Commande
sql "SELECT categories.name, COUNT(*) AS products FROM products JOIN categories ON products.category_id = categories.id GROUP BY categories.name ORDER BY products DESC LIMIT 4"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

5. Trouver ce qui manque

Un JOIN simple ne garde que les lignes qui ont une correspondance. LEFT JOIN garde tous les clients et met NULL quand il n’y a aucune commande. WHERE orders.id IS NULL ne garde que ceux-là : les quatre clients qui n’ont jamais commandé.

Commande
sql "SELECT customers.first_name, customers.country FROM customers LEFT JOIN orders ON orders.customer_id = customers.id WHERE orders.id IS NULL"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie personnelle de chaque élève. Elle utilise le même lab MySQL que « Les bases de SQL », donc le raccourci sql et l’historique de l’élève sont conservés. La base de la boutique a été faite pour qu’il y ait des choses à trouver : des clients qui n’ont jamais commandé, des produits jamais vendus, des valeurs manquantes. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.

Plus dans ce labo

À propos de ce labo et de sa source: Lab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.