Ressources pour développeur web

Théme de la semaine : Démo CSS

Compter les lignes d’une table MySQL facilement | Tutoriel

Temps de lecture estimé : 6 minutes
Accueil PHP 8 Compter les lignes d’une table MySQL facilement | Tutoriel

Vous avez besoin de compter les lignes d’une table MySQL rapidement ? Que ce soit pour afficher le nombre d’utilisateurs, de commandes ou de résultats, MySQL propose des requêtes simples et efficaces. Découvrez les meilleures méthodes pour obtenir un total précis facilement.

  • Comprendre les meilleures méthodes pour obtenir rapidement le nombre d’enregistrements d’une table et exploiter cette information dans vos projets web.
  • Savoir filtrer vos résultats pour compter uniquement les données utiles, comme les membres actifs, commandes validées ou recherches ciblées.
  • Découvrir des conseils pratiques pour écrire des requêtes plus propres, plus rapides et adaptées aux besoins réels d’un site dynamique.

Compter les lignes d’une table en MySQL est une opération simple… mais essentielle. Que vous souhaitiez afficher le nombre d’utilisateurs inscrits, compter les commandes passées ou vérifier si une recherche retourne des résultats, vous aurez tôt ou tard besoin de savoir combien d’enregistrements se trouvent dans une table.

Même si vous débutez, cette manipulation est très accessible. Il suffit de connaître les bonnes requêtes SQL et de comprendre ce qu’elles font réellement. Dans ce tutoriel complet, vous allez apprendre à compter les lignes d’une table MySQL de plusieurs façons, avec des exemples concrets, des astuces pratiques et les erreurs à éviter.

Pourquoi compter les lignes d’une table MySQL ?

Avant de taper la moindre requête, prenons un cas réel.

Imaginez une table clients contenant tous vos utilisateurs :

idnomemail
1Alicealice@email.fr
2Bobbob@email.fr
3Charliecharlie@email.fr

Vous souhaitez afficher sur votre site :

Nous avons déjà 3 clients inscrits !

Ou encore dans l’administration :

  • nombre total de commandes
  • nombre d’articles publiés
  • nombre de messages non lus
  • nombre de visiteurs enregistrés

Dans tous ces cas, il faut compter les lignes d’une table MySQL.

Compter les lignes d'une table MySQL

Chaque ligne représente un enregistrement. Donc compter les lignes revient à compter les données stockées.

La méthode classique : COUNT(*)

La fonction la plus connue en MySQL est COUNT().

Voici la requête standard :

SELECT COUNT(*) FROM clients;

Cette requête signifie :

  • SELECT : je veux récupérer une information
  • COUNT(*) : je veux compter toutes les lignes
  • FROM clients : dans la table clients

Résultat :

COUNT(*)
3

MySQL vous retourne simplement le nombre total de lignes.

C’est la méthode la plus utilisée pour compter les lignes d’une table MySQL.

Pourquoi utiliser COUNT(*) ?

Le * signifie ici : toutes les lignes.

Il ne récupère pas toutes les colonnes une par une comme certains le pensent. Ici, il sert juste à dire :

Compte tous les enregistrements.

C’est fiable, simple et recommandé.

Exemple concret avec une boutique en ligne

Imaginons une table commandes.

SELECT COUNT(*) FROM commandes;

Résultat :

248

Cela veut dire que votre boutique a enregistré 248 commandes.

Pratique pour afficher des statistiques ou suivre votre activité.

Donner un nom au résultat avec AS

Par défaut, MySQL affiche :

COUNT(*)

Ce n’est pas très élégant.

Vous pouvez renommer la colonne :

SELECT COUNT(*) AS total FROM clients;

Résultat :

total
3

Beaucoup plus propre.

Dans vos scripts PHP, cela simplifie aussi la récupération du résultat.

Compter uniquement certaines lignes avec WHERE

Parfois, vous ne voulez pas compter toute la table.

Par exemple : seulement les utilisateurs actifs.

Table users :

idnomactif
1Paul1
2Julie0
3Marc1

Requête :

SELECT COUNT(*) AS total FROM users WHERE actif = 1;

Résultat :

2

Vous avez donc 2 utilisateurs actifs.

Très utile pour :

  • membres connectés
  • commandes payées
  • produits en stock
  • articles publiés

Compter les lignes selon une date

Exemple : nombre de commandes aujourd’hui.

SELECT COUNT(*) 
FROM commandes
WHERE DATE(date_commande) = CURDATE();

Cette requête compte uniquement les commandes du jour.

Idéal pour un tableau de bord dynamique.

👉 Pour aller plus loin : Le format date avec MySQL

COUNT(colonne) : quelle différence ?

Vous verrez parfois :

SELECT COUNT(email) FROM clients;

Attention, ce n’est pas exactement pareil.

Ici, MySQL compte uniquement les lignes où email n’est pas vide (NULL).

Exemple :

idnomemail
1Paulpaul@email.fr
2JulieNULL
3Marcmarc@email.fr

Requête :

SELECT COUNT(email) FROM clients;

Résultat :

2

Julie n’est pas comptée car son email est NULL.

COUNT(*) ou COUNT(colonne) : lequel choisir ?

Dans la majorité des cas :

COUNT(*)

est le meilleur choix pour compter les lignes d’une table MySQL.

Utilisez :

COUNT(colonne)

uniquement si vous voulez compter les valeurs renseignées dans cette colonne.

Compter les lignes uniques avec DISTINCT

Parfois, certaines valeurs se répètent.

Exemple, prenons la table visites :

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?
idpays
1France
2France
3Belgique
4Canada

Si vous voulez connaître le nombre de pays différents :

SELECT COUNT(DISTINCT pays) FROM visites;

Résultat :

3

Car il y a :

  • France
  • Belgique
  • Canada

Compter les lignes groupées avec GROUP BY

Très pratique pour les statistiques.

Table commandes

idstatut
1payée
2attente
3payée
4annulée

Requête :

SELECT statut, COUNT(*) AS total
FROM commandes
GROUP BY statut;

Résultat :

statuttotal
payée2
attente1
annulée1
  • Vous obtenez un résumé automatique.

Magique ? Non. SQL.

Utiliser COUNT en PHP avec MySQL

Si votre site utilise PHP, voici un exemple avec PDO.

<?php

$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");

$sql = "SELECT COUNT(*) AS total FROM clients";
$stmt = $pdo->query($sql);

$resultat = $stmt->fetch();

echo "Nombre de clients : " . $resultat['total'];

Affichage :

Nombre de clients : 3

Simple, propre et efficace.

👉 Pour aller plus loin : Base de données PDO

Exemple réel pour un espace membre

Vous avez une table users. Vous souhaitez afficher :

152 membres nous ont rejoints.

Code :

$sql = "SELECT COUNT(*) AS total FROM users";
$stmt = $pdo->query($sql);
$data = $stmt->fetch();

echo $data['total'] . " membres nous ont rejoints.";

Cela apporte de la preuve sociale et rassure les visiteurs.

Est-ce rapide sur une grosse table ?

Sur une petite table, aucun souci, par contre sur une table contenant 100 000 lignes, 1 million de lignes voir 10 millions de lignes… Le temps de calcul peut augmenter.

  • MySQL doit compter les enregistrements selon le moteur utilisé.

Mais rassurez-vous : COUNT(*) reste performant si votre base est bien conçue.

Performance avec WHERE et index

Si vous comptez souvent ceci :

SELECT COUNT(*) FROM users WHERE actif = 1;

Ajoutez un index sur actif.

Cela accélère les recherches et les comptages.

ALTER TABLE users ADD INDEX(actif);

Petit changement, gros gain possible.

👉 Pour en savoir plus :

Erreur fréquente des débutants

Beaucoup écrivent :

SELECT * FROM clients;

Puis comptent les lignes en PHP.

  • C’est une mauvaise idée.

Parce que vous chargez toutes les données inutilement.

Il vaut mieux laisser MySQL faire le travail :

SELECT COUNT(*) FROM clients;

C’est plus rapide, plus propre et moins gourmand.

Compter les résultats d’une recherche

Exemple :

SELECT COUNT(*) 
FROM produits
WHERE nom LIKE '%chaise%';

Cette requête compte tous les produits contenant “chaise”.

Très utile pour :

  • moteur de recherche interne
  • filtres e-commerce
  • catalogue produit

Vérifier si une ligne existe

Parfois, vous voulez simplement savoir si un utilisateur existe.

SELECT COUNT(*) 
FROM users
WHERE email = 'test@email.fr';
  • Si résultat = 0 : absent
  • Si résultat > 0 : existe

Pratique lors d’une inscription.

Existe-t-il une autre méthode ?

Oui, certains utilisent :

SHOW TABLE STATUS;

ou

information_schema

Mais pour les débutants, retenez ceci :

  • Pour compter précisément les lignes d’une table MySQL :
SELECT COUNT(*)

C’est la base solide.

Résumé des requêtes utiles

Compter toute la table :

SELECT COUNT(*) FROM table;

Compter avec condition :

SELECT COUNT(*) FROM table WHERE condition;

Compter une colonne non vide :

SELECT COUNT(colonne) FROM table;

Compter les valeurs uniques :

SELECT COUNT(DISTINCT colonne) FROM table;

Compter par catégorie :

SELECT colonne, COUNT(*) FROM table GROUP BY colonne;

Quand vous travaillez avec MySQL :

  • préférez COUNT(*)
  • ajoutez AS total
  • utilisez WHERE intelligemment
  • évitez de charger toutes les lignes pour compter ensuite
  • pensez aux index sur grosses tables

Votre serveur vous dira merci. Ou au moins il ventilera moins fort.

Comment compter les lignes d’une table MySQL ?

Pour compter les lignes d’une table MySQL, utilisez la requête suivante :

SELECT COUNT(*) FROM nom_table;

Elle retourne le nombre total d’enregistrements présents dans la table.

Quelle différence entre COUNT(*) et COUNT(colonne) en MySQL ?

COUNT(*) compte toutes les lignes de la table, tandis que COUNT(colonne) compte uniquement les lignes où cette colonne contient une valeur non nulle (NULL exclu).

Comment compter seulement certaines lignes dans MySQL ?

Vous pouvez ajouter une condition avec WHERE :

SELECT COUNT(*) FROM users WHERE actif = 1;

Cette requête compte uniquement les utilisateurs actifs.


Savoir compter les lignes d’une table MySQL fait partie des fondamentaux à maîtriser. C’est une opération simple en apparence, mais omniprésente dans les vrais projets : statistiques, tableaux de bord, espace membre, boutique en ligne, vérification de données, filtres de recherche…

La requête COUNT(*) sera souvent votre meilleure alliée. Une fois comprise, elle vous fera gagner du temps, allégera votre code PHP et rendra vos applications plus efficaces. En développement web, les petites commandes SQL sont souvent celles qui font les grands projets.

Pour aller plus loin avec MySQL :