• 6 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/26/22

Effectuez des opérations et sauvegardez vos requêtes

Log in or subscribe for free to enjoy all this course has to offer!

Comptez le nombre d’objets récupérés via une requête

Combien d’objets répondent à un critère (ou une requête SQL) donné ?

Par exemple, admettons qu’un utilisateur de Foodly souhaite savoir combien il existe d’aliments bio, ou que vous souhaitiez compter le nombre d’utilisateurs dans l’application.

Comment pourrait-on retranscrire cela en SQL ?

Il existe le mot cléCOUNT, qui permet justement cela. Appliqué à n’importe quelle commande SQL de type  SELECT  , il vous donnera le nombre d’objets récupérés plutôt que leur valeur.

Vous souvenez-vous de la commande que nous avions effectuée pour récupérer uniquement les utilisateurs dont l’e-mail était un Gmail ? Comment l’adapter pour connaître le nombre d’utilisateurs avec une adresse Gmail dans la base ?

C’est simple, voici la commande :

SELECT COUNT(*) FROM utilisateur WHERE email LIKE "%gmail.com";

Copiez et collez cette commande dans votre terminal. Que voyez-vous ?

MySQL vous affiche le nombre d’objets plutôt que leur contenu. Vous voyez donc combien d’utilisateurs répondent à ce critère.

Par exemple, 

Par exemple,SELECT COUNT(*)FROM utilisateur; compte tous les utilisateurs, tandis que  SELECT COUNT(nom) FROM utilisateur;  compte tous les noms de famille.

Ok, vous allez me dire qu’on trouve exactement le même nombre. Et c’est vrai. Compter dans une colonne prend vraiment son sens en comptant le nombre de valeurs distinctes.

Par exemple,  SELECT COUNT(DISTINCT nom) FROM utilisateur;  comptera uniquement les noms de familles différents, vous permettant de voir si certains utilisateurs ont le même nom !

Effectuez des opérations sur des données chiffrées

Si l’on peut compter, pourquoi ne pas directement effectuer des opérations ?

Admettons que l’on souhaite connaître le total calorique d’un groupe d’articles, ou bien la contenance moyenne en sucre d’un groupe d’aliments :  au lieu de tout noter à la main depuis la base de données, laissez MySQL effectuer ces opérations pour vous !

Pour cela, il existe plusieurs mots clés que vous pouvez appliquer à une colonne lors d’une requête pour en modifier le résultat :

  • AVG  : nous donne la moyenne de la colonne sur la sélection ;

  • SUM  : nous donne la somme de la colonne sur la sélection ;

  • MAX  : nous donne le maximum de la colonne sur la sélection ;

  • MIN  : nous donne le minimum de la colonne sur la sélection.

Récapitulatif visuel du paragraphe rédigé ci-dessus
Les règles d'opération

Envie de connaître le maximum de teneur en sucre des aliments dans notre base ? Rien de plus simple :

SELECT MAX(sucre) FROM aliment;

Plus compliqué : quelle est la teneur moyenne en calories des aliments de 30 kcal ou plus :

SELECT AVG(calories) FROM aliment WHERE calories >= 30;

À vous de jouer !

Je vous laisse tester ces opérations avec  MIN  et  SUM  !

Pour voir à quoi cela ressemble dans le terminal, voici un screencast explicatif où je reprends une à une toutes ces commandes sur la liste des aliments qui ne sont pas bio :

Sauvegardez vos requêtes avec CREATE VIEW

Je ne sais pas vous, mais personnellement, je déteste faire deux fois la même chose.

Vous imaginez devoir retaper la même commande SQL à chaque fois que vous souhaitez extraire le même type de données ? Un enfer. 😨

Heureusement pour nous, MySQL peut nous aider !

Admettons que vous souhaitiez sauvegarder dans une vue la commande suivante : les utilisateurs dont l’adresse mail est une adresse Gmail. Comment faites-vous ?

Eh bien, vous utilisez la commandeCREATE VIEW!

Voici la commande :

CREATE VIEW utilisateurs_gmail_vw AS SELECT * FROM utilisateur WHERE email LIKE "%gmail.com";
Récapitulatif visuel de la commande. utilisateurs_gmail_vw = nom de la vue à créer. AS SELECT*FROM utilisateur = depuis la table
La commande CREATE VIEW

Je viens de créer la vue “utilisateurs_gmail_vw”. Cette dernière s’utilise désormais comme une table.

Ainsi, pour récupérer les utilisateurs avec une adresse Gmail, plus besoin d’écrire ma requête compliquée !

Je n’ai plus qu’à écrire :

SELECT * FROM utilisateurs_gmail_vw;
Récapitulatif visuel de la commande.  SELECT*FROM = récupéer la donnée. utilisateurs_gmail_vw =depuis la vue utilisateurs_gmail_vw
Utilisation de la commande CREATION VIEW avec SELECT * FROM

Le plus utile avec cela, c’est que la vue se comporte comme une vraie table. Vous pouvez ainsi réappliquer d’autres commandes SQL sur cette dernière.

Par exemple : afficher les utilisateurs dont l’adresse e-mail est une adresse Gmail ET dont le prénom contient la lettre “m” :

SELECT * FROM utilisateurs_gmail_vw WHERE prenom LIKE "%m%";

À vous de jouer !

Essayez à présent par vous-même la création d'une vue. Créez une vue reprenant notre liste des aliments non bio, classés par contenance en protéines (de manière décroissante).

Si vous êtes coincé, la solution est disponible ci-dessous. 👇

En résumé

  • Vous avez appris à effectuer des opérations mathématiques simples avec des mots clés commeCOUNT ouAVG.

  • Vous savez sauvegarder des requêtes avec CREATE VIEW

Avec ce que vous avez appris dans le chapitre précédent et celui-ci, vous êtes devenu un champion des requêtes SQL avancées ! Mais il manque encore une corde à votre arc : écrire des requêtes permettant de récupérer des relations entre différents objets. Voyons ensemble comment faire, dans le chapitre suivant !

Example of certificate of achievement
Example of certificate of achievement